退出代码

问题描述:

所以我想验证一个特定的命令退出代码

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

退出代码不可用由于任务的背景(通过&),而不是的重定向。

您应该使用wait来获取后台任务的退出代码。

等待命令停止脚本执行,直到 后台运行的所有作业已经结束,或直至作业号或进程ID 指定为选项终止。它返回等待命令的退出状态 。

+0

如果程序不会在后台运行,Brian会怎么样?我能否获得退出代码? –

您可以在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"