2013-07-12 199 views
5

所以我想驗證一個特定的命令退出代碼

runuser -s /bin/bash @user_name -c $command > /dev/null 2>&1 & 

我如何找到命令runuser -s /bin/bash @user_name -c $command是否正確執行的退出代碼? 我試過使用$?,但它不工作,因爲它總是0(重定向的結果是0)

我怎樣才能找到該命令的退出代碼?

+0

你的程序在後臺運行:

因此,對於你的腳本,你可以做這樣的事情。 – Antarus

+1

不要污衊你的帖子。 – ChrisF

回答

11

退出代碼不可用由於任務的背景(通過&),而不是的重定向。

您應該使用wait來獲取後臺任務的退出代碼。

等待命令停止腳本執行,直到 後臺運行的所有作業已經結束,或直至作業號或進程ID 指定爲選項終止。它返回等待命令的退出狀態 。

+0

如果程序不會在後臺運行,Brian會怎麼樣?我能否獲得退出代碼? –

3

您可以在bash中使用$!來獲取最後一個後臺進程的pid。然後你可以做wait pid。這將一直等到使用pid的過程完成。

runuser -s /bin/bash @user_name -c $command > /dev/null 2>&1 & 
myPid=$! 
wait $myPid 
status=$? 
echo "Exit status of the process with pid: $myPid is $status"