So wie es aussieht, werden sie nacheinander ausgeführt, unabhängig davon, ob sie fehlgeschlagen sind oder nicht. Sie müssen nur irgendwann aussteigen, dann wird der nächste Befehl ausgeführt. Einer nach dem anderen.
Wenn Sie möchten, dass sie nur ausgeführt werden, wenn die vorherigen Befehle nicht mit einem Fehler beendet wurden, verwenden Sie:
python do_this_first.py && python do_this_second.py && python do_this_last.py
Hier funktionieren die beiden kaufmännischen Und-Zeichen wie ein logischer AND
. Das zweite Skript wird nur ausgeführt, wenn das erste sauber beendet wurde, und das dritte nur, wenn das zweite fehlerfrei lief. Wenn ein Fehler aufgetreten ist, wird keiner der folgenden Befehle ausgeführt.
Wenn Sie sie jedoch parallel ausführen möchten, können Sie dies tun – aber es gibt viele andere Optionen:
python do_this_first.py &
python do_this_second.py &
python do_this_last.py &
Die Bash ist sequentiell. Am Anfang wird die Datei do_this_first.py interpretiert. Nachdem Python die Ausführung beendet hat, wird die Steuerung wieder an Bash übertragen. Die Bash wiederum führt python do_this_second.py aus und so weiter.
Also im Wesentlichen, do_this_first beginnt und endet, do_this_second beginnt und endet und dann do_this_last beginnt und endet.
Wie slhck sagte, ist das Folgende eine Option.
python do_this_first.py && python do_this_second.py && python do_this_last.py
Oder Sie könnten -e setzen, was sofort beendet wird, wenn eine Zeile einen Fehlercode zurückgibt.
#!/bin/bash
# Exit immediately if a command exits with a non-zero status.
set -e
python do_this_first.py
python do_this_second.py
python do_this_last.py
Für mich ist letzteres besser lesbar.