在shell脚本中运行Python脚本 - 检查状态

时间:2013-01-21 21:58:50

标签: python bash shell scripting exit-code

在我的shell脚本中,我运行此命令:

python script.py

我想知道,这是一个两部分的问题:

  1. 如何编程我的python脚本以将状态传递回运行它的shell脚本,具体取决于python脚本中发生的情况。例如,如果python脚本出现问题,请使用代码1退出,然后将其发送回shell。

  2. 如何让我的shell脚本读取python的退出代码并退出以获取错误?例如,除了0之外的任何状态代码都会退出。

2 个答案:

答案 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