grep模式单引号和双引号

时间:2012-11-08 05:15:35

标签: grep double-quotes

在单引号和双引号中包含grep模式之间有什么区别吗?

grep "abc" file.txt

grep 'abc' file.txt

我问,因为我无法自己测试所有可能的案例,而且我不想偶然发现我错了的情况:)

2 个答案:

答案 0 :(得分:5)

如果您有特殊字符,我会发现不同之处:

前:

grep "foo$barbase" file.txt

shell会尝试扩展变量$barbase,这可能不是你打算做的。

如果您输入

grep 'foo$barbase' file.txt

$bar字面意思。

最后,默认情况下总是更喜欢单引号,它更强。

答案 1 :(得分:1)

  • 在双引号中,以下字符具有特殊含义:'$', ''','\',以及,当启用历史记录扩展时,'!'。

    字符'$'和'’ retain their special meaning within double quotes ($ for variables and用于执行)。

    特殊参数'*'和'@'保留了它们的特殊含义 以$开头的双引号作为输入。

    '$','`','"','\'或换行符可以通过在它们前面转义 反斜杠。

    反义词在后跟'$','`'时保留其特殊含义, '"','\'或换行符。没有a的字符前面的反斜杠 特殊意义未经修改。

    检查shell扩展也会有所帮助:
    https://www.gnu.org/software/bash/manual/html_node/Shell-Expansions.html#Shell-Expansions

  • 单引号忽略shell扩展。
相关问题