您的位置:首页 > 运维架构 > Shell

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

2013-08-20 20:51 197 查看
在执行某个命令的时候,有时需要依赖于前一个命令是否执行成功。例如,假设你希望

将一个目录中的文件全部拷贝到另外一个目录中后,然后删除源目录中的全部文件。在删除

之前,你希望能够确信拷贝成功,否则就有可能丢失所有的文件。

在本章中,我们将讨论:

•  命令执行控制。

•  命令组合。

如果希望在成功地执行一个命令之后再执行另一个命令,或者在一个命令失败后再执行

另一个命令,&&和||可以完成这样的功能。相应的命令可以是系统命令或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; . . . }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: