购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.3.6 多命令顺序执行

在Bash中,如果需要让多条命令顺序执行,则有这样几种方法,如表2-6所示。

表2-6 多命令顺序执行的方法

1.“;”多命令顺序执行

如果使用“;”连接多条命令,那么这些命令会依次执行,但是,在各条命令之间没有任何逻辑关系。也就是说,不论哪条命令报错,后面的命令还是会依次执行。举一个例子:

这就是“;”执行符的作用,不论前一条命令是否正确执行,都不影响后续命令的执行。再举一个例子:

当需要一次执行多条命令,而这些命令之间又没有任何逻辑关系时,就可以使用“;”来连接多条命令。

2.“&&”逻辑与

如果使用“&&”连接多条命令,那么这些命令之间就有逻辑关系了。只有第一条命令正确执行了,“&&”连接的第二条命令才会执行。那么,命令2是如何知道命令1正确执行的呢?这就需要Bash的预定义变量$?(参考2.4.5节)的支持了。如果$?的返回值是0,则证明上一条命令正确执行;如果$?的返回值是非0,则证明上一条命令报错。举一个例子:

再举一个例子。在安装源码包时,需要执行“./configure”“make”“make install”命令,但是,在安装软件时又需要等待较长时间,那么,是否可以利用“&&”同时执行这3条命令呢?当然可以,命令如下:

在这里,“\”代表一行命令没有输入结束。因为命令太长了,所以加入“\”字符,可以换行输入。利用“&&”就可以让这3条命令同时执行,然后我们就可以休息片刻,等待命令执行结束。

请大家思考:在这里是否可以把“&&”替换为“;”或“||”呢?当然是不行的,因为这3条安装命令必须在前一条命令正确执行之后,才能执行后一条命令。如果把“&&”替换为“;”,则不管前一条命令是否正确执行,后一条命令都会执行。如果把“&&”替换为“||”,则只有前一条命令报错,后一条命令才会执行。

3.“||”逻辑或

如果使用“||”连接多条命令,则只有前一条命令执行错误,后一条命令才能执行。举一个例子:

“&&”和“||”非常有意思。虽然我们暂时还没有学习if判断语句,但是“&&”和“||”的结合使用,已经可以实现if双分支判断语句的功能。我们来试试。

如果想要判断某条命令是否正确执行,可以这样来做:

请大家思考:判断命令是否正确执行的格式是“命令 && echo "yes" || echo "no"”,先写“&&”,后写“||”。如果反过来写,先写“||”,后写“&&”,则是否可以?我们来试试。 Qi+9Dp2Po58TJa7CQFn9n2N6yt8JDXKMSKB7RcXyWgI/8qUPaJqiZpb5LIHLY/Kf

点击中间区域
呼出菜单
上一章
目录
下一章
×