2017-10-13 7 views
0

私は常にN関数を同時に呼び出すforループを作成したいと思います。彼らはお互いに依存していない、私は単にこのループを並行して実行したいと思う。ループバックグラウンドプロセスの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 
) 

EDIT:それが問題

答えて

0
だった... (echo "waiting for all background processes" && wait)はサブシェルで実行されたので、はい、それがあった:それは私がわから EDIT2ないんだけど...サブシェルとは何かを持っているかもしれません

私は

私は、コードを固定...サブシェルで実行された (echo "waiting for all background processes" && wait)によるものであった、答えを見つけ