0
我想创建一个for循环,我总是同时调用N
函数。他们不依赖于对方,我只是想要平行运行这个循环。bash等待循环中的后台进程
我的想法是调用我的函数作为后台进程,并在每次进行第N次调用后,我想等待所有后台进程。
但不知何故,它不会等待... 我敢肯定我错过了一些明显的东西。
#!/bin/bash
fun(){
for i in {1..5}
do
echo $i
sleep 1s
done
}
N=2
(
for k in {1..8}
do
((i=i%N))
# ((i++==0)) && (echo "waiting for all background processes" && wait) PROBLEM SOLVED:
((i++==0)) && echo "waiting for all background processes" && wait
echo "i = $i"
fun &
done
wait
)
编辑:它可能有一些做的一个子shell ...我不知道 EDIT2:是的,这是因为(echo "waiting for all background processes" && wait)
在子shell执行......这就是问题