BASH中的“引用”是用来去除某些字符或者符号的特殊意义的。引用可以禁止对特殊字符的特殊对待,禁止保留字被BASH识别。还可以禁止参数扩展。
BASH中的每一个元字符都有他们的特殊意义,如果你想要让元字符代表它们本身(也即它们的字面值),不被SHELL进行扩展,就必须在使用的时候引用它们!BASH中的元字符有以下几个:
| & ; ( ) < > space tab
当命令历史扩展被使能,历史扩展字符!必须被引用以防止被扩展
在BASH中有三种引用机制:转义字符,单引号,双引号。
转义字符 :一个没有被引用的反斜杠就是转义字符。转义字符会使紧跟在它后面的字符保留它的字面意思。仅仅有一种例外:新行<newline>出现在反斜杠后面的时候,如果反斜杠没有被转移的话,<newline>代表一行的继续。
单引号:括在一对单引号中的字符会保留他们的字面值。一个单独的单引号不能出现在一对单引号中,即使中间的单引号使用了转义字符进行转义也不可以。
双引号:括在一对双引号中的字符大部分会保留它们的字面意思。我说的是大部分,因为存在四种异常情况:
1. ‘$’:美元符号。如果美元符号出现在了一对双引号中间,美元符号代表它的特殊意义,即如果后接存在的变量,会进行扩展。
2. ‘`’ :反单引号。如果反单引号出现在了一对双引号之间,也代表它的特殊意义。
3. `\`:反斜杠。如果反斜杠出现在了一对双引号之间,当且仅仅当反斜杠后面是下面的五种字符的时候,反斜杠才会代表它的特殊意义
(1)$ 美元符号
(2) ` 反单引号
(3) \ 反斜杠
(4) " 双引号
(5) <newline> 新行
4. ! :感叹号。如果历史扩展功能使能的话,当双引号中出现感叹号的时候,会进行历史扩展,除非在感叹号的前面加上转义字符进行转义。但是转义之后反斜杠并不会从输出中去除。