为什么 sed 命令要加引号?

0 sed

如果我们以 开头 Sed 命令并以sed为范围sed /X/Y/ FILE,为什么它们通常被用引号标记为sed "s/X/Y/g" FILE

ilk*_*chu 10

保护它们免受壳的伤害。并不是说像这样的字符串s/X/Y/需要它,但是当您执行涉及空格或 shell 特殊字符的操作时,无论如何您都需要添加引号。在某种程度上,从一开始就引用更容易,因为无论如何它都没有坏处。

这在没有引号的情况下有效:

$ echo abcdefg | sed s/abc/xyz/ 
xyzdefg
Run Code Online (Sandbox Code Playgroud)

如果没有它们,这会以一些有趣的方式发生:

$ printf 'abc\nabc\n' | sed -E '$s/(abc|def)/xyz zyx/'
abc
xyz zyx
Run Code Online (Sandbox Code Playgroud)

  • 需要明确的是,默认情况下,您应该始终在所有字符串(包括脚本)周围使用单引号,而不是在需要时添加引号来考虑这一点,如果/需要时更改为双引号(例如,扩展变量) ),并在需要时完全删除它们(例如用于文件名扩展)。请参阅 https://mywiki.wooledge.org/Quotes。 (2认同)