如何在bash中调用的python脚本遇到错误时停止bash脚本?

时间:2015-06-16 20:58:54

标签: python bash shell exception error-handling

我有一个非常简单的问题,如标题中所述。我在网上搜索了一下,发现答案对我来说并不容易。最小的例子是,我有一个python脚本python_script.py:

#!/us/bin/python                                                           

import sys                                                                  

number = int(sys.argv[1])                                                        

if number <= 10:                                                            
    pass                                                                    
else:                                                                       
    raise ValueError('Number is higher than 10!')                           
    sys.exit(1)                                                                                     

然后我有一个bash脚本bash_script.sh,调用python脚本。

#!/bin/bash                                                                 

for num in {1..100}                                                         
do                                                                          
  python python_script.py ${num}                                            
done          

我试图做的是:在python脚本中引发异常后,我希望bash脚本立即停止(即,在此示例中,当num> 10时)。但是现在使用这两个脚本,所有从1到100的num循环都在bash脚本中执行,但只有在10之后才会在屏幕上打印异常。我想这应该很容易,所以提前感谢您的帮助。

1 个答案:

答案 0 :(得分:5)

您可以测试python脚本的退出状态,如果非{0},则退出bash脚本。最简单的方法是

#!/bin/bash                                                                 

for num in {1..100}                                                         
do                                                                          
  python python_script.py ${num} || exit                                         
done    

但您也可以使用if声明:

for num in {1..100}
do
    if ! python python_script.py ${num}; then
        echo "An error occurred"
        exit
    fi
done