您好,我正在从另一个 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