为什么在字符串前写 $ 会影响 bash 如何解释其中的反斜杠?

为什么在字符串前写 $ 会影响 bash 如何解释其中的反斜杠?

今天我遇到了这个:

$ echo $'foo\\n'
foo\n
$ echo 'foo\\n'
foo\\n

我以前从未遇到过这种情况,也从未听任何人提到过这种情况。我原本以为$字符串之外会导致该字符串被视为变量名。这在哪里有记录,并且一直都是这样吗?

答案1

这是 bash 的 ANSI-C 引用

形式为 的词$'string'被特殊处理。该词扩展为细绳,使用反斜杠转义字符替换,如 ANSI C 标准所指定。如果存在反斜杠转义序列,则按如下方式解码:

这里有记录https://www.gnu.org/software/bash/manual/bash.html#ANSI_002dC-Quoting

相关内容