linux上执行多个shell命令,在上一步命令执行成功才继续下一步命令, 且每步中包含多个命令语句的简洁写法

有时候我们需要执行一系列操作, 每一步需要上一步执行成功后才会执行下一步否则就退出整个脚本,  直接举个栗子:

wget https://getcomposer.org/installer || ( echo "failed"; exit ) && php composer-setup.php && rm -r composer-setup.php && echo "install oj8k" 
这里是其他的shell命令

解释:
'&&': 顺序执行执行作用  如a && b, a成功后才会执行b, 否则b不会执行
'||': 如a||b a执行失败才会执行b,a 成功了就不会执行b了
';'  : 两条shell要使用逗号隔开
():  为了将多条命令当作一个整体看, 如例子中 ( echo "failed"; exit ) 如果wget执行失败会执行echo 和 exit退出脚本这两个动作, 一定要加上(), 不然exit会被当成独立的语句,所以无论怎么都会被执行到, 这就违背了我们的意图了

以上命令所做事情的描述: 

wget 下载内容如果下载失败那么就 执行括号中echo 和 exit 退出当前脚本命令; 如果下载成功那么就执行php composer-setup.php, 该命令成功就继续执行rm -r composer-setup.php, 如果失败那么rm -r composer-setup.php 和 echo "install oj8k"都不会被执行,然后执行下面的其他shell语句 

附加: 有时候我们没有办法全部写在一句中, 那么$?获取都上一个命令的执行结果, 为此我们可以像如下做

这里是shell命令...

[ $? -eq 0 ] || (echo "上个命令执行失败,退出"; exit) && 继续其他命令

   

你可能感兴趣的:(php)