第6章 命令执行顺序
在执行某个命令的时候,有时需要依赖于前一个命令是否执行成功。例如,假设你希望
将一个目录中的文件全部拷贝到另外一个目录中后,然后删除源目录中的全部文件。在删除
之前,你希望能够确信拷贝成功,否则就有可能丢失所有的文件。
在本章中,我们将讨论:
• 命令执行控制。
• 命令组合。
如果希望在成功地执行一个命令之后再执行另一个命令,或者在一个命令失败后再执行
另一个命令,& &和| |可以完成这样的功能。相应的命令可以是系统命令或 s h e l l脚本。
S h e l l还提供了在当前s h e l l或子s h e l l中执行一组命令的方法,即使用()和 { }。
6.1 使用&&
使用& &的一般形式为:
命令1 && 命令2
这种命令执行方式相当地直接。 & &左边的命令(命令 1)返回真 (即返回0,成功被执行)
后,& &右边的命令(命令 2)才能够被执行;换句话说,“如果这个命令执行成功 & &那么执
行这个命令”。
这里有一个使用& &的简单例子:
在上面的例子中, & &前面的拷贝命令执行成功,所以 & &后面的命令( e c h o命令)被执
行。
再看一个更为实用的例子:
$ mv /apps/bin /apps/dev/bin && rm -r /apps/bin
在上面的例子中, / a p p s / b i n目录将会被移到 / a p p s / d e v / b i n目录下,如果它没有被成功执行,
就不会删除 / a p p s / b i n目录。
在下面的例子中,文件 q u a r t e r _ e n d . t x t首先将被排序并输出到文件 q u a r t e r. s o r t e d中,只有
这一命令执行成功之后,文件 q u a r t e r. s o r t e d才会被打印出来:
$ sort quarter_end.txt > quarter.sorted && lp quarter.sorted
6.2 使用||
使用| |的一般形式为:
命令1 || 命令2
1