在shell里,有些字符或word有特殊的含义,shell会特殊对待它们。例如reserved word, metacharacters, operator,参数扩展符$, 历史扩展符 ! 等。
而引号或转义字符的作用就是删除它们的特殊含义。
转义字符 \
\ 保留了下一个字符的字面值
$ echo $(( 1+1 ))
2
$ echo \$\(\( 1+1 \)\)
$(( 1+1 ))
$ echo \$\(\( \1\+\1 \)\)
$(( 1+1 ))
$ echo \\
\
但是换行符例外。\和换行符在一起时,换行符将被删除。
~$ cat foo
echo a\
b
$ . foo
ab
单引号和双引号
用单引号引起来的字符会保留字面值。 单引号之间不能再出现单引号。在单引号里的 \ 也失去了转义作用。
用双引号引起来的字符会保留字面值,但$, `, \ 和 ! 例外。
$ echo a; b
a
-bash: b: command not found
$ echo "a; b" # metacharacter ; 在双引号中失去了特殊意义</