我正在尝试在我的脚本中传播退出代码,但是当我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