多命令执行逻辑优化:如何实现全失败时触发command4?
优雅实现多命令全失败触发后续操作的Shell方案
要实现依次执行command1、command2、command3,且仅当三者全部执行失败(退出状态码均不为0)时才执行command4,可以通过单独记录每个命令的退出状态,再做逻辑判断的方式实现,代码清晰且符合需求:
# 依次执行命令并留存每个命令的退出状态 command1 stat1=$? command2 stat2=$? command3 stat3=$? # 仅当三个命令全部失败时执行command4 if [ "$stat1" -ne 0 ] && [ "$stat2" -ne 0 ] && [ "$stat3" -ne 0 ]; then command4 fi
说明
- 每个命令执行后立刻用
$?获取退出状态并保存到变量,确保不会被后续命令覆盖状态值 - 逻辑判断直接检查三个状态变量是否均不为0,语义明确,可读性强
- 完全满足“必须依次执行所有三个命令,无论中间是否失败”的核心要求
内容的提问来源于stack exchange,提问作者Matthias Schuster
相关产品推荐
相关产品推荐

