13.2.1 转义
转义是指使用转义符引用单个字符,从而使其表达单纯的字符的字面含义。Shell中的转义符是反斜线“\”,使用转义符的目的是使转义符后面的字符单纯地作为字符出现,而不解释其特殊的含义——这是笔者尝试的最能表达转义符含义的解释,不过我相信如果不借助于实例还是非常难以理解的。下面就来看看实例。
请考虑如何使用echo打印出“$Dollar”这种字符串。如果不假思索,你可能给出与下面类似的错误写法:
- #
- 试图打印“$Dollar
- ”字符串的错误演示
- [root@localhost ]# echo $Dollar
- --->
- 此处打印为空,因为Shell
- 尝试打印出变量Dollar
- 的值,但是这个变量并没有声明,所以打印空行
- #
- 使用转义字符转义$
- 字符
- [root@localhost ]# echo \$Dollar
- $Dollar
- #
- 更多的例子
- #
- 打印乘号。如果不用转义符转义*
- 号,则*
- 号会作为一般的通配符使用,结果是将工作目录中的
- 所有目录和文件名替换它
- [root@localhost ]# echo 8 \* 8 =64
- 8 * 8 =64
- #
- 句子中含有引号。如果不用转义符转义'
- 单引号,则Shell
- 会等待出现另一个单引号才能结束echo
- 进程
- [root@localhost ]# echo john\'s cat
- john's cat
在上面的示例中,命令的输出将会是空字符。由于“$”符号是一个特殊字符,所以“$Dollar”被Shell尝试解释为“取出并打印Dollar变量的值”,如果恰巧你在系统中定义了这个变量并给予赋值,那么此处会打印出该变量的值——无论是哪种,都不是你原先想要的结果。这时就要使用“\”来转义“$”字符,让“$”失去其特殊含义,而只作为一个符号出现。
表13-3列出了在Shell中有特殊含义的字符,想要显示其字符本身,则需要使用转义符进行转义。不需要记住它们,但是建议多看几遍留个印象,在需要使用的时候查阅一下即可。
表13-3 Shell特殊字符