加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-14 00:01:58 所属栏目:Linux 来源:网络整理
导读:我们考虑以下代码: a b c decho "Command {xyz} ended with exit code $?" 如果一切顺利,它很简单,因为所有命令都返回0的退出代码.但是如果遇到非零退出代码,是否可以说,哪个命令返回它并打破了链 – 即. {xyz}应该是什么? PS.我知道我可以使用嵌套的条件
我们考虑以下代码:

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}"

但与第一种更通用且危险性更小的解决方案相比,我们并没有节省太多;)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读