[英]Running a Python script within shell script - Check status
在我的 shell 腳本中,我運行以下命令:
python script.py
我想知道,作為一個兩部分的問題:
我如何編寫我的 python 腳本以將狀態傳遞回運行它的 shell 腳本,具體取決於 python 腳本中發生的情況。 例如,如果 python 腳本中出現問題,讓它退出,代碼為 1,該代碼被發送回 shell。
如何讓我的 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.