如何获取后台进程的返回值? 如果我这样做,我会得到0
#!/bin/bash
SomeCommand&
echo $?
输出 #~0
但如果我尝试
SomeCommand
echo $?
输出 #~255
我读了那个等命令,但是如果我这样做了
SomeCommand$
wait $!
echo $?
如果上一个命令没有完成,我无法运行下一个命令。
答案 0 :(得分:6)
wait
命令等待给定的background
作业完成。像这样使用它:
( sleep 5; exit 4 ) &
wait $!
ret=$?
echo $ret
4
$!
表示最近一次后台作业的进程ID。
在您的情况下,您可以这样做:
SomeCommand &
wait $!
echo $?
要启动多个后台作业并稍后检索其退出状态,请在开始每项作业后保存$!
的值。
( sleep 5; exit 4 ) & b1_pid=$!
( sleep 5; exit 21 ) & b2_pid=$!
# More code
wait $b1_pid
b1_exit=$?
wait $b2_pid
b2_exit=$?
答案 1 :(得分:0)
#!/bin/bash
command1 &
commandN &
for job in $(jobs -p)
do
wait $job
echo $?
done