退出代码
问题描述:
所以我想验证一个特定的命令退出代码
runuser -s /bin/bash @user_name -c $command > /dev/null 2>&1 &
我如何找到命令runuser -s /bin/bash @user_name -c $command
是否正确执行的退出代码? 我试过使用$?
,但它不工作,因为它总是0(重定向的结果是0)
我怎样才能找到该命令的退出代码?
答
退出代码不可用由于任务的背景(通过&
),而不是的重定向。
您应该使用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"
你的程序在后台运行:
因此,对于你的脚本,你可以做这样的事情。 – Antarus
不要污蔑你的帖子。 – ChrisF