微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux – 链中的命令失败了什么?

我们考虑以下代码

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] 举报,一经查实,本站将立刻删除。

相关推荐