转: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 元字符,并且您想去除它的特殊含义,就可以在两边加上引号,例如,当您要传递一个美元符号 ($
) 作为字面上的美元符号字符而不是作为变量名前的特殊元字符时。
在引用的文本内部发生各种扩展。例如,在双引号括起来的文本中,变量被展开为它们的值,而单引号括起来的文本内部引用的变量名则不展开。
有三种重要的引用类型需要了解:
-
通过在前面加反斜杠 (\) 引用单个字符。这样只会传替字符的字面含义,而非它可能包含的任何特殊含义,比如空格符或 Shell 元字符。例如,使用?
\*
?引用一个星号 (*),它是 Shell 元字符。要引用真正的反斜杠字符,可以使用?\\
。 -
通过在文本字符串两边加双引号 (
"
) 来传递扩展的引用。美元符号 ($
) 和单引号 ('
) 字符会保留其自身含义。因此,和其他字符一起在引用中出现的任何变量名都会被它们的值所替代。新行或特定字符 ($`"\
) 前的反斜杠被移除,但是引用的字符会被传递。<