所以我想验证特定命令的退出代码
runuser -s /bin/bash @user_name -c $command > /dev/null 2>&1 &
如何查找命令runuser -s /bin/bash @user_name -c $command
是否正确执行?
我尝试使用$?
,但它不起作用,因为它始终为0(重定向的结果为0)
如何找到该命令的退出代码?
答案 0 :(得分:11)
由于任务的后台处理(通过&
),不重定向,退出代码不可用。
您应该使用wait来获取后台任务的退出代码。
wait命令停止脚本执行,直到所有作业都在运行 后台已终止,或直到作业号或进程ID 指定为选项终止。它返回退出状态 等待命令。
答案 1 :(得分: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"