簡體   English   中英

當bash中調用的python腳本遇到錯誤時,如何停止bash腳本?

[英]How to stop a bash script when the python script that is called within bash encounters an error?

正如標題中所述,我有一個非常簡單的問題。 我在網上搜索了一下,發現答案不容易理解。 一個最小的例子是,我有一個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之后,例外才會顯示在屏幕上。 我想這應該很容易,所以在此先感謝您的幫助。

您可以測試python腳本的退出狀態,如果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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM