我们考虑以下代码:
a && b && c && d
echo "Command {xyz} ended with exit code $?"
如果一切顺利,它很简单,因为所有命令都返回0的退出代码.但是如果遇到非零退出代码,是否可以说,哪个命令返回它并打破了链 – 即. {xyz}应该是什么?
PS.我知道我可以使用嵌套的条件语句,但链接结构非常清晰易懂 – 我只想为它添加一些分析.
解决方法:
你可以尝试类似的东西:
{ a; status1=$?; } && { b; status2=$?; }
echo "status1=${status1}, status2=${status2}"
如果您不需要在命令的stdout中打印输出,可以考虑这样的事情:
run_and_check() {
eval "$@" >/dev/null 2>&1 # you Could replace /dev/null by a log file
echo $?
}
status1=$(run_and_check "a") && status2=$(run_and_check "b")
echo "status1=${status1}, status2=${status2}"
但与第一种更通用且危险性更小的解决方案相比,我们并没有节省太多;)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。