我正在尝试在我的脚本中传播退出代码,但是当我exit $?
似乎总是以 0 退出时。
按照要求:
<some command>
if [[ ! -z "$?" ]]
then
echo "Some error"
exit $?
fi
写这个:
your_command || exit
...或者,如果您想记录:
your_command || { retval=$?; echo "Failed" >&2; exit "$retval"; }
由于exit
用作$?
其默认退出状态,因此前者是执行此操作的最简单和最短的方法。
echo "Some error"
exit $?
$?
是echo
命令的退出状态,几乎总是为 0。
认为$?
是非常脆弱的;任何命令都会破坏它。
此外,-z
是错误的测试;它测试它的参数是否是一个空字符串,而不是它是否有值0
。
如果您想在紧随其后的命令之后使用命令的退出状态,请将其保存:
<some command>
status=$?
if [[ "$status" -ne 0 ]]
then
echo "Some error" 1>&2
exit $status
fi