13.2.1 转义

转义是指使用转义符引用单个字符,从而使其表达单纯的字符的字面含义。Shell中的转义符是反斜线“\”,使用转义符的目的是使转义符后面的字符单纯地作为字符出现,而不解释其特殊的含义——这是笔者尝试的最能表达转义符含义的解释,不过我相信如果不借助于实例还是非常难以理解的。下面就来看看实例。

请考虑如何使用echo打印出“$Dollar”这种字符串。如果不假思索,你可能给出与下面类似的错误写法:


  1. #
  2. 试图打印“$Dollar
  3. ”字符串的错误演示
  4. [root@localhost ]# echo $Dollar
  5. --->
  6. 此处打印为空,因为Shell
  7. 尝试打印出变量Dollar
  8. 的值,但是这个变量并没有声明,所以打印空行
  9. #
  10. 使用转义字符转义$
  11. 字符
  12. [root@localhost ]# echo \$Dollar
  13. $Dollar
  14. #
  15. 更多的例子
  16. #
  17. 打印乘号。如果不用转义符转义*
  18. 号,则*
  19. 号会作为一般的通配符使用,结果是将工作目录中的
  20. 所有目录和文件名替换它
  21. [root@localhost ]# echo 8 \* 8 =64
  22. 8 * 8 =64
  23. #
  24. 句子中含有引号。如果不用转义符转义'
  25. 单引号,则Shell
  26. 会等待出现另一个单引号才能结束echo
  27. 进程
  28. [root@localhost ]# echo john\'s cat
  29. john's cat

在上面的示例中,命令的输出将会是空字符。由于“$”符号是一个特殊字符,所以“$Dollar”被Shell尝试解释为“取出并打印Dollar变量的值”,如果恰巧你在系统中定义了这个变量并给予赋值,那么此处会打印出该变量的值——无论是哪种,都不是你原先想要的结果。这时就要使用“\”来转义“$”字符,让“$”失去其特殊含义,而只作为一个符号出现。

表13-3列出了在Shell中有特殊含义的字符,想要显示其字符本身,则需要使用转义符进行转义。不需要记住它们,但是建议多看几遍留个印象,在需要使用的时候查阅一下即可。

表13-3 Shell特殊字符

13.2.1 转义 - 图1

13.2.1 转义 - 图2