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

wis*_*wit 2 python error-handling bash shell exception

我有一个非常简单的问题,如标题中所述.我在网上搜索了一下,发现答案对我来说并不容易.最小的例子是,我有一个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)                                                                                     
Run Code Online (Sandbox Code Playgroud)

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

#!/bin/bash                                                                 

for num in {1..100}                                                         
do                                                                          
  python python_script.py ${num}                                            
done          
Run Code Online (Sandbox Code Playgroud)

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

che*_*ner 5

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

#!/bin/bash                                                                 

for num in {1..100}                                                         
do                                                                          
  python python_script.py ${num} || exit                                         
done    
Run Code Online (Sandbox Code Playgroud)

但你也可以使用一个if声明:

for num in {1..100}
do
    if ! python python_script.py ${num}; then
        echo "An error occurred"
        exit
    fi
done
Run Code Online (Sandbox Code Playgroud)