Ich habe ein Skript mit mehreren Befehlen. Wie kann ich Befehle gruppieren, um sie zusammen auszuführen (ich möchte mehrere Gruppen von Befehlen erstellen? Innerhalb jeder Gruppe sollten die Befehle parallel (gleichzeitig) ausgeführt werden. Die Gruppen sollten nacheinander ausgeführt werden und warten, bis eine Gruppe fertig ist, bevor sie gestartet werden nächste Gruppe) ... dh
#!/bin/bash
command #1
command #2
command #3
command #4
command #5
command #6
command #7
command #8
command #9
command #10
Wie kann ich alle 3 Befehle zusammen ausführen? Ich habe es versucht:
#!/bin/bash
{
command #1
command #2
command #3
} &
{
command #4
command #5
command #6
} &
{
command #7
command #8
command #9
}&
command #10
Dies hat jedoch nicht ordnungsgemäß funktioniert (ich möchte die Befehlsgruppen gleichzeitig parallel ausführen. Außerdem muss ich warten, bis die erste Gruppe fertig ist, bevor ich die nächste Gruppe ausführe.)
Das Skript wird mit einer Fehlermeldung beendet!
Antworten:
Die Befehle in jeder Gruppe werden parallel ausgeführt, und die Gruppen werden nacheinander ausgeführt. Jede Gruppe paralleler Befehle wartet darauf, dass die vorherige Gruppe beendet wird, bevor die Ausführung gestartet wird.
Das Folgende ist ein Arbeitsbeispiel:
Angenommen, 3 Befehlsgruppen wie im folgenden Code. In jeder Gruppe werden die drei Befehle im Hintergrund mit gestartet
&
.Die 3 Befehle werden fast gleichzeitig gestartet und parallel ausgeführt, während das Skript ausgeführt wird
waits
.Nachdem alle drei Befehle in der dritten Gruppe beendet wurden,
command 10
wird Exit ausgeführt.quelle
Sollte funktionieren (jede einzelne Triplett-Komponente wird nacheinander ausgeführt, die Gruppen werden jedoch parallel ausgeführt). Sie möchten wahrscheinlich nicht, dass Ihre übergeordnete Shell beendet wird, bevor die Gruppen beendet sind - daher die
wait
.quelle
wait
.