Bash在非交互式shell中等待异步作业,不带tty/作业控制
我正在尝试使用在非交互式shell中运行的bash脚本并行运行多个作业 我不希望主脚本在所有子进程也终止之前终止 下面是我尝试做的一个例子:Bash在非交互式shell中等待异步作业,不带tty/作业控制,bash,Bash,我正在尝试使用在非交互式shell中运行的bash脚本并行运行多个作业 我不希望主脚本在所有子进程也终止之前终止 下面是我尝试做的一个例子: while (( "$#" )); do some_long_task "$1" & done for job in `jobs -p`; do wait $job || echo 'Could not wait for job: ' $job done 这给了我一个错误bash:no job control in this shell
while (( "$#" )); do
some_long_task "$1" &
done
for job in `jobs -p`; do
wait $job || echo 'Could not wait for job: ' $job
done
这给了我一个错误bash:no job control in this shell
,并在完成作业之前终止
如何让bash等待每个子进程?
wait
不带参数地等待所有子进程,这似乎正是您所需要的。在禁用作业控制的情况下似乎可以正常工作。您可以使用类似的功能
while (( "$#" )); do
some_long_task "$1" &
eval pid='$pid $!'
done
wait $pid
谢谢