gpt4 book ai didi

bash - 为什么 shell 会忽略通过变量传递给它的参数中的引号字符?

转载 作者:太空宇宙 更新时间:2023-11-04 11:53:15 25 4
gpt4 key购买 nike

<分区>

这些工作如广告所示:

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)作为另一个,这意味着,在这种情况下,'hello 将是搜索模式并且 world' 将是搜索路径。

同样,只有当参数从 argumentString 变量扩展时才会发生这种情况。在第一个示例中,grep 正确地将 'hello world'(和 hello\world)解释为单个参数。

谁能解释一下这是为什么?是否有适当的方法来扩展字符串变量,以保留每个字符的语法,以便 shell 命令正确解释它?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com