Ich versuche, einige Protokolldateien mithilfe eines Skripts zu analysieren, und da alle unabhängig voneinander analysiert werden können, versuche ich, sie im Hintergrund auszuführen. Ich verwende den folgenden Befehl, erhalte jedoch den folgenden Syntaxfehler:
for k in {2..3}; do for i in {1..3}; do for j in {1..3}; do ./run_parser.sh ${k} ${i} ${j} > parse_${k}${i}${j}.log 2>&1 &; done; done; done
-bash: syntax error near unexpected token `;'
Obwohl, wenn ich das run_parser.sh
Skript einzeln ohne die Schleife ausführe , läuft es gut. Etwas wie:
./run_parser.sh 2 1 2 > parse_212.log 2>&1 &
funktioniert einwandfrei.
Außerdem habe ich zuvor versucht:
for k in {2..3}; do for i in {1..3}; do for j in {1..3}; do ./run_parser.sh ${k} ${i} ${j} & > parse_${k}${i}${j}.log ; done; done; done
Das funktionierte auch, aber die Ausgabeumleitung funktionierte nicht und alles wurde auf dem Bildschirm gedruckt.
Sie brauchen kein
;
nach a&
, das&
selbst fungiert als Befehlstrennzeichen. Siehe den Abschnitt "Liste der Befehle" im Bash-Referenzhandbuch .Dadurch werden drei gleichzeitig ausgeführt
ping
:quelle