如何在一行代码中检测命令的退出码是否等于指定值?
替代Bash中先运行命令再检查特定退出码的等价写法
原始代码需先执行命令,再通过$?单独检查退出码是否为2:
diff a.txt b.txt if [ $? = 2 ]; then echo diff failed exit 2 fi
以下是无需单独获取$?的等价写法,直接将命令执行与退出码检查结合:
写法一:分支判断式
if diff a.txt b.txt; then # 退出码为0时无需操作,用:占位 : elif [ $? -eq 2 ]; then echo diff failed exit 2 fi
写法二:紧凑逻辑式
diff a.txt b.txt || { [ $? -eq 2 ] && { echo diff failed; exit 2; }; }
本问题与同类问题的区别
本问题核心是检查命令退出码是否等于特定非0值(2),而非通用的“退出码是否为0(命令是否成功)”判断,因此与仅关注成功/失败的相关问题场景不同。
内容的提问来源于stack exchange,提问作者xuhdev
相关产品推荐
相关产品推荐

