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