单引号和反斜杠


10
~$ echo $'\'test'
'test

man bash 说:

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

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

Answers:


16

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


14

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

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

这就是为什么!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.