我有一個a.py由 shell script 運行的 python腳本b.sh。我希望的回傳結果(這是INT)a.py來b.sh。
我知道我可以sys.exit(result)在a.py. 但正如我所寫set -ex的b.sh,shell 腳本在運行后停止a.py。我不想使用print(result)eather,因為我想在a.py.
有沒有其他方法可以從a.pyto回傳結果b.sh?
uj5u.com熱心網友回復:
您可以從 python 腳本回傳退出代碼,并通過$?以下方式在 shell 腳本中查找(并在必要時重新分配給另一個變數):
foo.py:
import sys
sys.exit(35)
foo.sh:
python foo.py
echo $?
運行腳本:
> sh foo.sh
35
uj5u.com熱心網友回復:
你可以這樣做:
{ a.py; result=$?; } || true
# the result of a.py is in $result
|| true暫時禁用set -e,并且$?特殊變數$result在被下一個命令覆寫之前被存盤。
缺點是,如果您的腳本實際上失敗了(例如通過引發例外),您不會注意到這一點。更強大的解決方案是列印所需的結果并將其捕獲為輸出,并將其他輸出列印為標準錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/376534.html
下一篇:如何將整數決議為命令列引數?
