给出以下复合命令:
try_this || or_this || fine_this
try_this将返回2,或者_t这将返回3,fine_this将返回0.
如何在执行后找出or_this的退出状态?除非有类似于管道的 PIPESTATUS 或 pipefail ,否则我认为这是不可能的。
答案 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"