日期:2014-05-16  浏览次数:20621 次

UNIX 新手指南: 一些很好的 Shell 诀窍

转:http://www.ibm.com/developerworks/cn/education/aix/au-unixtips4/section2.html

Shell 命令执行

学习 Shell 脚本的最佳方法是通过示例。对于您要在脚本中执行的任何命令都可以在命令行上立即尝试,这也是本教程通篇提供大量实践示例的原因所在。例如,echo?命令将一行文本写入到标准输出。(许多 Shell 以内置命令形式提供其自己版本的?echo?命令,包括 IBM AIX? 的 Bourne Shell 实现。如果这也是您的现实情况,那么当您运行?echo?时,实际上正在运行您的 Shell 版本的命令。)

引用

尝试在使用?echo?输出短消息时加引号:

$ echo "Hello, world"
Hello, world

?

Shell?引用(无论在命令行还是在脚本中加注)是一种将字符串传递给 Shell 的方法,可以避免对字符串中可能包含的任何特殊元字符产生混淆。当字符串包含一个以上的单词或者段落包含空格字符时使用引用。如果单个字符恰好是 Shell 元字符,并且您想去除它的特殊含义,就可以在两边加上引号,例如,当您要传递一个美元符号 ($) 作为字面上的美元符号字符而不是作为变量名前的特殊元字符时。

在引用的文本内部发生各种扩展。例如,在双引号括起来的文本中,变量被展开为它们的值,而单引号括起来的文本内部引用的变量名则不展开。

有三种重要的引用类型需要了解:

  1. 通过在前面加反斜杠 (\) 引用单个字符。这样只会传替字符的字面含义,而非它可能包含的任何特殊含义,比如空格符或 Shell 元字符。例如,使用?\*?引用一个星号 (*),它是 Shell 元字符。要引用真正的反斜杠字符,可以使用?\\

  2. 通过在文本字符串两边加双引号 (") 来传递扩展的引用。美元符号 ($) 和单引号 (') 字符会保留其自身含义。因此,和其他字符一起在引用中出现的任何变量名都会被它们的值所替代。新行或特定字符 ($`"\) 前的反斜杠被移除,但是引用的字符会被传递。<