由于使用空格扩展变量导致的Grep错误

时间:2010-03-30 06:51:07

标签: bash grep double quotes variable-expansion

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

x="physics 1b"
grep "string" "$x".sh

grep抱怨:

grep:  physics 1b: No such file or directory.

但是,当我这样做时

grep "string" physics\ 1b.sh 

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

使用bash 3.2,mac os 10.6。

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

3 个答案:

答案 0 :(得分:8)

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

grep "string" "$x.sh"

答案 1 :(得分:2)

在你的剧本中使用它。

grep "string" "${x}.sh"

答案 2 :(得分:0)

另一种方式

grep "string" "${x}.sh"