Ich möchte eine for-Schleife erstellen, wo ich immer N
Funktionen gleichzeitig aufrufen. Sie sind nicht voneinander abhängig, ich möchte diese Schleife einfach parallel ausführen.Bash warten auf Hintergrundprozesse in Schleife
Meine Idee ist, meine Funktion als Hintergrundprozess zu nennen und nach jedem N-ten Aufruf möchte ich auf alle Hintergrundprozesse warten.
Aber irgendwie wartet es nicht ... Ich bin sicher, ich vermisse etwas offensichtlich.
#!/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: es könnte etwas mit einem Sub-Shell zu tun haben ... Ich bin nicht sicher EDIT2: ja, es war, weil (echo "waiting for all background processes" && wait)
in einer Subshell ausgeführt wurde ... das war das Problem