2014-07-14 74 views
2

是否有可能獲得在python中運行在shell上的前一個命令的退出代碼?在Python中獲取前一個命令的退出代碼?

我想編寫一個腳本,它將返回當前設置的錯誤代碼(假設python命令成功)。這將相當於在bash中做這樣的事情:

#!/bin/bash 
err=$? 

# Do something... 

exit $err 

我想避免將它作爲參數傳遞,如果可能的話。例如:

python script.py $? 

回答

2

我會說,你的解決方案(包裝無論是「以前的命令」,並在一個shell腳本,保持返回碼的跟蹤Python腳本)是要走的路:

#!/bin/bash 
first_command 
ERR=$? 
python second_script.py 
exit $ERR 

Python的腳本將更加可重用,因爲它不必依賴任何關於其環境的假設。

任何理由爲什麼這個包裝解決方案不適合你的情況?

+2

您還需要導出'ERR';否則,它只是一個shell變量,而不是一個環境變量,python腳本將無法訪問它。 – chepner

2

恕我直言,這是不可能的。由bash啓動的命令無法訪問shell變量,也無法訪問shell本身。它只能知道:

  • 目前在環境中的所有變量(?但$是不是)
  • 外殼的PID,並通過它的外殼

的路徑,但我不知道任何bash API以獲得更多。