首页 >> 学习 >> Shell脚本编程基础 >> 命令组合符
命令组合符

本节重要性:★★★★★    本节难度:★★★★★

不同的命令可以按照不同的方式组合起来,实现更多的功能,如前面我们已经接触过的管道。除了管道符(|),Shell的命令组合符还有分号(;)、逻辑与(&&)和逻辑或(||)。这些命令组合符可分为两类:无条件命令组合符(管道符和分号)和条件命令组合符(&&、||)。

分类            名称     符号   作用
无条件命令组合符  管道符    |      把前一个命令的输出作为后一个命令的输入
                  分号      ;      依次执行命令
条件命令组合符    逻辑与    &&     前一个命令执行成功再执行后一个命令
                  逻辑或    ||     前一个命令执行不成功再执行后一个命令

1. 无条件命令组合符

管道符和分号连接的两个命令无论前一个命令执行成功与否,都执行后一个命令,因此我们称这两种Shell特殊符号为无条件命令组合符。其中的管道符我们在前面的管道一节中已经学过。分号的作用与Shell脚本中的换行类似,其连接的命令按顺序依次执行。

[peter@ibi-genome shell]$ whoami
peter
[peter@ibi-genome shell]$ date
2017年 04月 30日 星期日 15:31:13 CST
[peter@ibi-genome shell]$ whoami;date
peter
2017年 04月 30日 星期日 15:31:23 CST

2. 条件命令组合符

&&和||要根据前一个命令的执行结果决定是否执行后一个命令,因此我们称这两种命令组合符为条件命令组合符。我们先看一个逻辑与的例子:

[peter@ibi-genome shell]$ ls
animal  plant
[peter@ibi-genome shell]$ test -f plant && rm -f plant
[peter@ibi-genome shell]$ ls
animal

如果前一个命令执行成功,test命令的返回值等于0,也就是如果当前目录下存在plant文件,就执行后一个命令,即删除该文件。如果当前目录下不存在plant文件,第一个命令的返回值大于0,后一个命令也不会执行。

下面是一个逻辑或的例子:

[peter@ibi-genome shell]$ ls
animal
[peter@ibi-genome shell]$ test -d plant || mkdir plant
[peter@ibi-genome shell]$ ls
animal  plant

命令执行前当前目录下只有animal目录,没有plant目录,test -d plant返回值大于0,所以执行||后面的命令mkdir plant,即创建plant目录。

有这几种命令组合符,即使不用我们后面要学习的控制结构,也可以实现复杂的功能,而且代码更简洁,效率更高。

<<上一节  下一节>>