单引号和反斜杠

moo*_*765 10 bash

~$ echo $'\'test'
'test
Run Code Online (Sandbox Code Playgroud)

man bash 说:

将字符括在单引号中会保留引号内每个字符的字面值。单引号之间不能出现单引号,即使前面有反斜杠。

为什么它在echo-command 中起作用呢?

cho*_*oba 16

单引号'...'不同于美元单引号$'...'。前者不支持任何反斜杠,而后者使用 ANSI C 规范。


moo*_*765 14

choroba的答案是完全正确的,这里的详细信息来自man bash

$'string' 形式的词被特殊处理。这个词扩展为
字符串,用 ANSI C 指定的反斜杠转义字符替换
标准。反斜杠转义序列(如果存在)按如下方式解码:
              \a 警报(响铃)
              \b 退格
              \e
              \E 转义字符
              \f 换页
              \n 换行
              \r 回车
              \t 水平制表符
              \v 垂直制表符
              \\反斜杠
              \' 单引号
              \" 双引号
              \? 问号
              \nnn 八位字符,其值为八进制值
                     nnn(一到三位数)
              \xHH 值为十六进制的八位字符
                     值 HH(一个或两个十六进制数字)
              \uHHHH Unicode (ISO/IEC 10646) 字符,其值为
                     十六进制值 HHHH(一到四个十六进制数字)
              \嗯嗯嗯嗯
                     Unicode (ISO/IEC 10646) 字符,其值为
                     十六进制值 HHHHHHHH(一到八个十六进制数字)
              \cx 一个 control-x 字符

这就是为什么!