紧跟着的 \
的字符字面量会被保留,输出的时候去掉 \
。html
一个特例是 \newline
(反斜杠+换行符),这个组合会被当作长字符串换行,输出的时候将 \newline
(反斜杠+换行符)移除、忽略。express
$ echo \a a $ echo \aaa aaa $ echo aaa\ > ssss aaassss
没法使用转义bash
$ echo 'aaa' aaa
基本做用:保留字面量翻译
特例:code
'$':htm
# $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
'`':字符串
# `command` 执行命令,将结果扩展为字符串 $ echo "aaaa`ls`ssss" aaaa1.txt 2.txtssss
'\':get
# 反斜杠+普通字符 $ echo "\a" \a # '$', '`', '"', '\', or 'newline'(换行) # 反斜杠+以上几个特殊符号,输出的时候反斜杠会被删除;其中,`newline` 也会被删除 $ echo "\$\`\"==\ > ==" $`"==== # 无论开启或者关闭历史扩展的功能,`反斜杠+!`的输出都同 `反斜杠+普通字符` 同样 $ echo "\!-1" \!-1
history expansion 开启时,'!':string
# 若是开启了历史扩展的功能 $ echo "!-1" //打印上一条历史命令 echo "echo "\a"" echo a
字符串中,以反斜杠开头的字符,若是符合 ANSI C 标准的转义字符,会被转义后扩展字符串。io
$ echo $'a\naa' a aa
会基于当前语言环境对 string 进行翻译。略。