返回后台进程bash的代码

时间:2014-09-18 10:03:54

标签: linux bash shell process

如何获取后台进程的返回值? 如果我这样做,我会得到0

#!/bin/bash
SomeCommand&
echo $?

输出 #~0

但如果我尝试

SomeCommand
echo $?

输出 #~255

我读了那个等命令,但是如果我这样做了

SomeCommand$
wait $!
echo $?

如果上一个命令没有完成,我无法运行下一个命令。

2 个答案:

答案 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