在脚本中运行Python脚本 - 检查状态
在我的shell脚本中,我运行了这个命令:
python script.py
我想问两个问题:
我该如何编写我的Python脚本,让它根据发生的事情把状态返回给运行它的shell脚本?比如说,如果Python脚本出错了,它应该以代码1退出,然后这个代码会被发送回shell。
我该如何让我的shell脚本读取Python的退出代码,并在出错时退出?比如说,如果状态码不是0,就退出。
2 个回答
2
虽然这个老问题已经被提起,但我想补充一个变体,方便大家检查多个退出代码。$?
这个命令只会获取最后执行的程序的退出代码一次。如果你需要检查多个情况的退出代码,就得把 $?
的值先存到一个变量里,然后再去检查这个变量。就像 @chepner 的例子那样:
python script.py
exit_code=$?
if [[ $exit_code = 0 ]]; then
echo "success"
elif [[ $exit_code = 1 ]]; then
echo "a different form of success, maybe"
else
echo "failure: $exit_code"
fi
29
首先,你可以在你的Python脚本中通过给sys.exit
传递一个参数来设置你想要的退出代码。
其次,最近退出的进程的退出代码可以在bash
的参数$?
中找到。不过,你可能不需要专门去检查它:
if python script.py; then
echo "Exit code of 0, success"
else
echo "Exit code of $?, failure"
fi
如果你想明确检查退出代码,你需要在if
语句中提供一个条件表达式:
python script.py
if [[ $? = 0 ]]; then
echo "success"
else
echo "failure: $?"
fi