\ 反斜杠(本义)

紧跟着的 \ 的字符字面量会被保留,输入的时候去掉 \

一个特例是 \newline (反斜杠+换行符),这个组合会被当做长字符串换行,输入的时候将 \newline (反斜杠+换行符)移除、疏忽。

$ echo \aa$ echo \aaaaaa$ echo aaa\> ssssaaassss

'' 单引号

无奈应用本义

$ echo 'aaa'aaa

"" 双引号

根本作用:保留字面量

特例:

  1. '$':

    # $name 援用变量名$ test=asdfg$ echo "$test"asdfg$ echo "11${test}22"11asdfg22# $(command) 执行命令,将后果扩大为字符串$ echo "aaaa$(ls)ssss"aaaa1.txt2.txtssss# $(( expression )) 执行算术表达式,将后果扩大为字符串$ echo "aaaa$(( 3+4 ))ssss"aaaa7ssss
  2. '`':

    # `command` 执行命令,将后果扩大为字符串$ echo "aaaa`ls`ssss"aaaa1.txt2.txtssss
  3. '\':

    # 反斜杠+一般字符$ echo "\a"\a# '$', '`', '"', '\', or 'newline'(换行)# 反斜杠+以上几个特殊符号,输入的时候反斜杠会被删除;其中,`newline` 也会被删除$ echo "\$\`\"==\> =="$`"====# 不论开启或者敞开历史扩大的性能,`反斜杠+!`的输入都同 `反斜杠+一般字符` 一样$ echo "\!-1"\!-1
  4. history expansion 开启时,'!':

    # 如果开启了历史扩大的性能$ echo "!-1" //打印上一条历史命令echo "echo "\a""echo a

$'string'

字符串中,以反斜杠结尾的字符,如果合乎 ANSI C 规范的转义字符,会被本义后扩大字符串。

$ echo $'a\naa'aaa

$"string"

会基于以后语言环境对 string 进行翻译。略。

参考

  • Bash Reference Manual:https://www.gnu.org/software/...