Ich versuche, einen Hintergrundjob in einer for-Schleife in bash auszuführen:
for i in $(seq 3); do echo $i ; sleep 2 & ; done
Ich bekomme eine Fehlermeldung:
bash: syntax error near unexpected token `;'
In zsh funktioniert die Kommandozeile.
Antworten:
Entferne das ; nach dem Schlafen
for i in $(seq 3); do echo $i ; sleep 2 & done
Übrigens sollten solche Schleifen besser in separaten Zeilen mit korrekter Einrückung geschrieben werden (wenn Sie dies in eine Shell-Skriptdatei schreiben).
for i in $(seq 3) do echo $i sleep 2 & done
quelle
$i
sagt die Jobsteuerung, wenn ich dies mit dem Befehl im Hintergrund mache , dass der Prozessname$i
anstelle des tatsächlichen Werts von enthält$i
?for I in <whatever>; do rm -fr $I & done
...jobs
->rm -fr $I
mehrmals, anstatt das eigentliche Verzeichnis für jeden Job zu löschenSie können den Hintergrundbefehl in () einfügen
for i in $(seq 3); do echo $i ; (sleep 2 &) ; done
quelle
wait
die Hintergrundjobs zu beenden.