-2

我正在尝试在我的脚本中传播退出代码,但是当我exit $?似乎总是以 0 退出时。

按照要求:

<some command>
if [[ ! -z "$?" ]]
then
    echo "Some error"
    exit $?
fi
4

2 回答 2

3

写这个:

your_command || exit

...或者,如果您想记录:

your_command || { retval=$?; echo "Failed" >&2; exit "$retval"; }

由于exit用作$?其默认退出状态,因此前者是执行此操作的最简单和最短的方法。

于 2013-10-29T23:44:47.770 回答
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
于 2013-10-30T00:04:39.753 回答