sh 命令的退出状态?

sh 命令的退出状态?

您好,我正在从另一个 shell 脚本内部调用 shell 脚本,如果该脚本调用成功,我必须进一步继续,我正在使用 sh 命令来调用另一个脚本,例如:

sh payloadjob.sh
if [[ $? -eq 0 ]]; then
    echo Success message 
else
    echo Failure message
fi

但我注意到,即使脚本调用成功,它也会给出退出状态 1,但它应该返回 0 表示成功,为什么会发生这种情况,我如何知道通过 sh 命令的脚本调用是否成功?

答案1

如果payload.sh脚本未以显式exit 0或退出exit 1,则其退出状态将是脚本中最后一个命令的退出状态。

如果最后一个命令确实如此,例如,如果无法找到或删除,rm something 2>/dev/null则退出状态将为非零。something

在您显示的脚本中,您正在正确测试变量$?。您还可以将测试简化为等效的

if sh payload.sh; then
    echo "Success"
else
    echo "Failure"
fi

相关内容