【发布时间】:2014-11-26 10:36:25
【问题描述】:
我创建了一个名为foo bar 的文件(使用命令touch foo\ bar)。
然后,在 Bash 中我尝试了以下命令:
s='"foo bar"'; find $s
s='"foo bar"'; find "$s"
s="foo bar"; find "$s"
对于第一个,find 查找名为 "foo 的文件,然后查找名为 bar" 的文件。
对于第二个,find 查找名为 "foo bar" 的文件。
两个命令都失败:find 找不到任何文件。
最后,第三条命令具有预期的行为:find 查找 foo bar 并显示它。
我知道不转义空格字符是不好的做法,但是谁能解释一下这里发生了什么?为什么第二个命令不起作用?
【问题讨论】: