Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash在非交互式shell中等待异步作业,不带tty/作业控制_Bash - Fatal编程技术网

Bash在非交互式shell中等待异步作业,不带tty/作业控制

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

我正在尝试使用在非交互式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
,并在完成作业之前终止


如何让bash等待每个子进程?

wait
不带参数地等待所有子进程,这似乎正是您所需要的。在禁用作业控制的情况下似乎可以正常工作。

您可以使用类似的功能

   while (( "$#" )); do
      some_long_task "$1" &
      eval pid='$pid $!'
    done

    wait $pid
谢谢