在单引号和双引号中包含grep
模式之间有什么区别吗?
grep "abc" file.txt
和
grep 'abc' file.txt
我问,因为我无法自己测试所有可能的案例,而且我不想偶然发现我错了的情况:)
答案 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