在我的shell脚本中,我运行此命令:
python script.py
我想知道,这是一个两部分的问题:
如何编程我的python脚本以将状态传递回运行它的shell脚本,具体取决于python脚本中发生的情况。例如,如果python脚本出现问题,请使用代码1退出,然后将其发送回shell。
如何让我的shell脚本读取python的退出代码并退出以获取错误?例如,除了0之外的任何状态代码都会退出。
答案 0 :(得分:16)
首先,您可以将所需的退出代码作为参数传递给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
答案 1 :(得分:2)
讨厌让恐龙复活,但是虽然这个选择的答案按书面要求工作了,但我想添加一个变体,使人们可以检查多个退出代码。 $?
似乎只检索一次上次执行的程序的退出代码。因此,如果您需要针对多种情况检查退出代码,则必须将$?
分配给变量,然后检查变量la(使用@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