\ 反斜杠(转义)

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

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

$ echo \a
a

$ echo \aaa
aaa

$ echo aaa\
> ssss
aaassss

'' 单引号

无法使用转义

$ echo 'aaa'
aaa

"" 双引号

基本作用:保留字面量

特例:

  1. '$':

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

    # `command` 执行命令,将结果扩展为字符串
    $ echo "aaaa`ls`ssss"
    aaaa1.txt
    2.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'
a
aa

$"string"

会基于当前语言环境对 string 进行翻译。略。

参考


夜游神
637 声望581 粉丝

哈哈。