2012-08-23 35 views
5

我有一個腳本,在該腳本中我仔細檢查錯誤條件的返回代碼,以便在發生故障時儘早中止。這個腳本的一個步驟是通過ssh和sudo以root身份運行一個命令。從sudo-run進程中捕獲退出代碼

考慮:

ssh $HOST sudo $CMD 
echo $? 

SSH將返回代碼回來就好了,但是即使$ CMD返回一個非零退出代碼,須藤仍在運行命令後返回0。

如何將返回碼捕獲到$ CMD?我非常偏袒它作爲ssh的返回碼傳遞回來,但如果有另一種簡單的方法不能被$ CMD的輸出所混淆,我就會全神貫注。

回答

4

事實證明,sudo 正確傳遞返回碼。我的測試用例很可能覆蓋了$?隨後執行或有條件測試。我通常使用一個命名變量來保存$?爲了避免這樣的事情,但你在那裏。

+0

同樣在這裏 - 我回應了結果,所以雖然ssh正確地傳遞了狀態碼,但是echo返回0。 –