在||系列中查找命令的中间退出状态

时间:2014-12-16 00:18:40

标签: bash scripting pipe

给出以下复合命令:

try_this || or_this || fine_this

try_this将返回2,或者_t这将返回3,fine_this将返回0.

如何在执行后找出or_this的退出状态?除非有类似于管道的 PIPESTATUS pipefail ,否则我认为这是不可能的。

1 个答案:

答案 0 :(得分:2)

没有任何内置功能,但没有什么可以阻止你自己在某处存放退出状态。例如:

storing_exit_status() {
  local dest=$1
  shift

  "$@"; local retval=$?

  printf -v "$dest" %d "$retval"
  return "$retval"
}

storing_exit_status try_this_retval try_this \
  || storing_exit_status or_this_retval or_this \
  || fine_this

echo "$try_this_retval"