Jak to vypadá, budou spuštěny jeden po druhém, bez ohledu na to, zda selhaly nebo ne. Musí pouze v určitém okamžiku skončit, pak je spuštěn další příkaz. Jeden po druhém.
Pokud chcete, aby byly provedeny pouze v případě, že předchozí příkazy neukončily s chybou, použijte:
python do_this_first.py && python do_this_second.py && python do_this_last.py
Zde dva ampersandy fungují jako logické AND
. Druhý skript se spustí pouze tehdy, když první skončil čistě, a třetí pouze tehdy, když druhý běžel bez chyb. Pokud došlo k nějaké chybě, nespustí se žádný z následujících příkazů.
Pokud je však chcete spouštět paralelně, můžete to udělat – ale existuje spousta dalších možností:
python do_this_first.py &
python do_this_second.py &
python do_this_last.py &
Bash je sekvenční. Na začátku bude interpretován soubor do_this_first.py. Poté, co python dokončí jeho provádění, je ovládací prvek znovu přenesen do bash. Bash zase spustí python do_this_second.py a tak dále..
Takže v podstatě do_this_first začíná a končí, do_this_second začíná a končí a pak do_this_last začíná a končí.
Jak řekl slhck, následující je jedna z možností.
python do_this_first.py && python do_this_second.py && python do_this_last.py
Nebo můžete nastavit -e, které se okamžitě ukončí, pokud řádek vrátí kód chyby.
#!/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
Pro mě je tento poslední čitelnější.