Red*_*yed 2 linux bash shell process
如何获得后台进程的返回值?如果我这样做,我会得到0
#!/bin/bash
SomeCommand&
echo $?
Run Code Online (Sandbox Code Playgroud)
输出: #~0
但是,如果我尝试
SomeCommand
echo $?
Run Code Online (Sandbox Code Playgroud)
输出: #~255
我读了那个等命令,但是如果那样做的话
SomeCommand$
wait $!
echo $?
Run Code Online (Sandbox Code Playgroud)
如果上一个命令没有完成,我无法运行下一个命令.
wait命令等待给定的background作业完成.像这样使用它:
( sleep 5; exit 4 ) &
wait $!
ret=$?
echo $ret
4
Run Code Online (Sandbox Code Playgroud)
$! 表示最近的后台作业的进程ID.
在您的情况下,您可以这样做:
SomeCommand &
wait $!
echo $?
Run Code Online (Sandbox Code Playgroud)
要启动多个后台作业并稍后检索其退出状态,请保存$!启动每个作业后的值.
( sleep 5; exit 4 ) & b1_pid=$!
( sleep 5; exit 21 ) & b2_pid=$!
# More code
wait $b1_pid
b1_exit=$?
wait $b2_pid
b2_exit=$?
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1526 次 |
| 最近记录: |