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

标签 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 切掉了前面的空格所以我不能说这是不同的。上面的第一种方法确实有效。

最佳答案

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

grep "string" "$x.sh"

关于bash - 由于用空格扩展变量导致的 Grep 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2543309/

相关文章:

c++ - std::vector<float> 和 double* - 这有多安全?

linux - 使用带有输出日志记录的 shell 自动 telnet

mysql - 如何从 bash 脚本中查找重复的 mysql id 集

java - 从 java BigDecimal 转换为 double 时丢失精度

Java:Math.random() Max Value (double just less than 1)

Ruby grep - 在数组中搜索字符串的一部分

python - 使用终端将时间戳输出到日志文件

linux - 如何在 Linux 中关闭自动添加转义字符功能

linux - 如何削减 ifconfig 以单独获取 eth* 详细信息?

regex - Grep 正则表达式以任何顺序查找单词