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