2017-10-13 2 views
0

나는 항상 N 함수를 동시에 호출하는 for 루프를 만들고 싶습니다. 그것들은 서로 의존하지 않고,이 루프를 병렬로 실행하기 만하면됩니다.루프가 백그라운드 프로세스를 기다리고 있습니다.

내 생각은 내 기능을 백그라운드 프로세스로 호출하고 모든 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 
) 

편집 : 그게 문제

답변

0
했다 ... (echo "waiting for all background processes" && wait)는 서브 쉘에서 실행 되었기 때문에 예, 그것이 : 내가 확실히 EDIT2 아니에요 ... 서브 쉘 함께 할 수있는 뭔가가있을 수 있습니다

나는

내가 코드를 고정 ...이 서브 쉘에서 실행 된 (echo "waiting for all background processes" && wait) 때문 답을 발견

관련 문제