mook765 Asked: 2019-05-30 03:40:28 +0800 CST2019-05-30 03:40:28 +0800 CST 2019-05-30 03:40:28 +0800 CST 单引号和反斜杠 772 ~$ echo $'\'test' 'test man bash说: 将字符括在单引号中会保留引号内每个字符的字面值。单引号之间不能出现单引号,即使前面有反斜杠。 为什么它在echo-command 中起作用呢? bash 2 个回答 Voted Best Answer choroba 2019-05-30T03:44:45+08:002019-05-30T03:44:45+08:00 单引号'...'不同于美元单引号$'...'。前者不支持任何反斜杠,而后者使用 ANSI C 规范。 mook765 2019-05-30T03:44:21+08:002019-05-30T03:44:21+08:00 choroba的答案是完全正确的,这里的细节来自man bash: $'string' 形式的单词被特殊处理。该词扩展为 字符串,用 ANSI C 指定的反斜杠转义字符替换 标准。反斜杠转义序列(如果存在)按如下方式解码: \一个警报(铃) \b 退格 \e \E 转义字符 \f 换页 \n 换行 \r 回车 \t 水平制表符 \v 垂直制表符 \\ 反斜杠 \' 单引号 \" 双引号 \? 问号 \nnn 八进制值的八位字符 nnn(一到三位数) \xHH 八位字符,其值为十六进制 值 HH(一个或两个十六进制数字) \uHHHH Unicode (ISO/IEC 10646) 字符,其值为 十六进制值 HHHH(一到四个十六进制数字) \嗯嗯嗯嗯嗯嗯嗯嗯嗯 Unicode (ISO/IEC 10646) 字符,其值为 十六进制值 HHHHHHHH(1 到 8 个十六进制数字) \cx 一个 control-x 字符 这就是为什么!
单引号
'...'
不同于美元单引号$'...'
。前者不支持任何反斜杠,而后者使用 ANSI C 规范。choroba
的答案是完全正确的,这里的细节来自man bash
:这就是为什么!