Shell编程学习---第六篇:命令执行顺序

在执行某个命令的时候,有时需要依赖于前一个命令是否执行成功。例如,假设你希望
将一个目录中的文件全部拷贝到另外一个目录中后,然后删除源目录中的全部文件。在删除
之前,你希望能够确信拷贝成功,否则就有可能丢失所有的文件。
在本章中,我们将讨论:
•  命令执行控制。
•  命令组合。
如果希望在成功地执行一个命令之后再执行另一个命令,或者在一个命令失败后再执行
另一个命令,&&和||可以完成这样的功能。相应的命令可以是系统命令或shell脚本。
shell还提供了在当前shell或子shell中执行一组命令的方法,即使用()和{}。

6.1 使用&&
使用& &的一般形式为:
命令1 && 命令2
这种命令执行方式相当地直接。 & &左边的命令(命令 1)返回真(即返回0,成功被执行)
后,&&右边的命令(命令 2)才能够被执行;换句话说, “如果这个命令执行成功 &&那么执
行这个命令” 。
这里有一个使用&&的简单例子:
$ cp test.txt test.bak && echo " copy success!"

在上面的例子中,&&前面的拷贝命令执行成功,所以&&后面的命令(echo命令)被执
行。

6.2 使用||
使用||的一般形式为:
命令1 || 命令2
 ||的作用有一些不同。如果||左边的命令(命令 1)未执行成功,那么就执行 ||右边的命令
(命令2);或者换句话说, “如果这个命令执行失败了||那么就执行这个命令” 。

6.3 用()和{}将命令结合在一起
如果希望把几个命令合在一起执行,shell提供了两种方法。既可以在当前shell也可以在
子shell中执行一组命令。
为了在当前shell中执行一组命令,可以用命令分隔符隔开每一个命令,并把所有的命令
用圆括号()括起来。
它的一般形式为:
(命令1;命令2;. . .)
如果使用{}来代替(),那么相应的命令将在子shell而不是当前 shell中作为一个整体被执
行,只有在 { }中所有命令的输出作为一个整体被重定向时,其中的命令才被放到子shell中执
行,否则在当前shell执行。它的一般形式为:
{命令1;命令2; . . . }

你可能感兴趣的:(Shell编程学习---第六篇:命令执行顺序)