这些工作如广告所示:
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命令能够正确解释它?