在我的 shell 脚本中,我运行以下命令:
python script.py
我想知道,作为一个两部分的问题:
如何根据 python 脚本中发生的情况对我的 python 脚本进行编程以将状态传递回运行它的 shell 脚本。例如,如果 python 脚本出现问题,则让它退出并返回代码 1,然后将其发送回 shell。
如何让我的 shell 脚本读取 python 的退出代码并退出错误?例如,除了 0 之外的任何状态码都会退出。
首先,您可以将所需的退出代码作为参数传递给sys.exit
您的 python 脚本。
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
讨厌复活恐龙,但是虽然这个选定的答案按书面形式工作,但我想添加一个变体,可以检查多个退出代码。$?
似乎只检索一次最后执行的程序的退出代码。因此,如果您需要针对多种情况检查退出代码,则有必要分配$?
给一个变量,然后检查该变量,a 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