bash:用空格扩展变量

nig*_*ire 4 bash quotes double grep variable-expansion

我有一个名为" physics 1b.sh" 的文件.
在bash,如果我尝试

x="physics 1b"
grep "string" "$x".sh
Run Code Online (Sandbox Code Playgroud)

grep抱怨:

grep:  physics 1b: No such file or directory.
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做的时候

grep "string" physics\ 1b.sh 
Run Code Online (Sandbox Code Playgroud)

它工作正常.所以我猜这个问题与变量没有被扩展以包含grep需要识别空间的反斜杠有关.我如何让它工作?

使用bash 3.2,mac os 10.6.

编辑:
没关系,问题是x设置为" physics 1b",但当我 echo $x 检查内容时,bash切断了前面的空间,所以我不能说它是不同的.上面的第一种方式确实有效.

Mar*_*tos 8

将整个参数放在双引号中:

grep "string" "$x.sh"
Run Code Online (Sandbox Code Playgroud)