代码之家  ›  专栏  ›  技术社区  ›  Ali

Bash:直接从变量VS运行命令的区别

  •  0
  • Ali  · 技术社区  · 5 年前

    这些工作如广告所示:

    grep -ir 'hello world' .
    grep -ir hello\ world .
    

    这些不会:

    argumentString1="-ir 'hello world'"
    argumentString2="-ir hello\\ world"
    grep $argumentString1 .
    grep $argumentString2 .
    

    尽管 'hello world' 在第二个示例中,grep被引号括起来,解释 'hello (以及 hello\ )作为一个论点和 world' (以及 world )作为另一种,这意味着,在这种情况下, 你好 将是搜索模式 世界” 将是搜索路径。

    同样,只有当参数从 argumentString 变量。grep正确解释 “你好,世界” (以及 hello\ world )作为第一个例子中的单个参数。

    有人能解释一下为什么吗?是否有一种适当的方法来扩展字符串变量,以保留每个字符的语法,从而使shell命令能够正确解释它?

    0 回复  |  直到 6 年前
    推荐文章