单引号和反斜杠

单引号和反斜杠
~$ echo $'\'test'
'test

man bash说:

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

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

答案1

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

答案2

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 控制 x 字符

这就是为什么!

相关内容