簡體   English   中英

在 shell 腳本中運行 Python 腳本 - 檢查狀態

[英]Running a Python script within shell script - Check status

在我的 shell 腳本中,我運行以下命令:

python script.py

我想知道,作為一個兩部分的問題:

  1. 我如何編寫我的 python 腳本以將狀態傳遞回運行它的 shell 腳本,具體取決於 python 腳本中發生的情況。 例如,如果 python 腳本中出現問題,讓它退出,代碼為 1,該代碼被發送回 shell。

  2. 如何讓我的 shell 腳本讀取 python 的退出代碼並退出錯誤? 例如,狀態碼不是 0,然后退出。

首先,您可以將所需的退出代碼作為參數sys.exit給 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

討厭復活一只恐龍,但是雖然這個選定的答案按書面方式工作,但我想添加一個變體,可以檢查多個退出代碼。 $? 似乎只檢索上一次執行的程序的退出代碼一次。 所以如果需要針對多種情況檢查退出碼,就需要賦值$? 到一個變量,然后檢查變量,一個 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

暫無
暫無

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

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