2012-12-03 11 views
10

Mam 2 skrypty python a.py i b.py i chcę napisać skrypt bash, który załaduje a.py i nie uruchomi b.py, dopóki a.py nie zostanie zrobione rzecz. Upraszczającskrypt bash dla Linuxa z wieloma pythonami

#!/usr/bin/env bash 
python a.py 
python b.py 

ale to jest naiwny, czek, aby zobaczyć czy a.py odbywa się ... jak to zrobić?

+2

To naturalne zachowanie, synchroniczne wykonanie. Jeśli chcesz, aby było inaczej (aby uruchomić się w tle i od razu zacząć b) powinieneś dołączyć znak ampersand & do polecenia, np. 'python a.py &'. –

Odpowiedz

23

Ta opcja domyślnie będzie już uruchamiana jedna po drugiej.


Aby sprawdzić, python a.py zakończone powodzeniem jako niezbędny warunek do prowadzenia python b.py, można zrobić:

#!/usr/bin/env bash 
python a.py && python b.py 

Natomiast próba uruchomienia python a.py i tylko uruchomić „python b.py”jeśli python a.py nie zakończyć sukcesem:

#!/usr/bin/env bash 
python a.py || python b.py 

Aby uruchomić je jednocześnie jako procesów w tle:

#!/usr/bin/env bash 
python a.py & 
python b.py & 

(W odpowiedzi na komentarz) - można łańcuch ten dla kilku poleceń z rzędu, na przykład:

python a.py && python b.py && python c.py && python d.py 
+0

czy to może być więcej niż dwa? gdybym również miał c.py, 'code' python a.py i& python b.py && python c.py' code' lub musiałby zrobić osobny wiersz dla c.py? pierwszy 'kod' python a.py && python b.py'code' następnie' kod'python b.py && python c.py'code' – StudentOfScience

+0

@StudentOfScience można =) zobacz zaktualizowaną odpowiedź –

+0

Korzystanie z && daje błąd ./bash.sh: linia 47: b.py: nie znaleziono polecenia, ale działa b.py, jeśli mam go jako python b.py dobrze :( – StudentOfScience

1
prompt_err() { 

echo -e "\E[31m[ERROR]\E[m"

}

prompt_ok() {

echo -e "\E[32m[OK]\E[m"

}

status() {

if [ $1 -eq 0 ]; then

prompt_ok

else prompt_err

exit -1

fi

}

a.py

status

b.py

Można użyć kodu wyboru powyżej.

Jeśli tylko "a.py" zostanie wykonane, to zostanie przetworzone "b.py", w przeciwnym razie zostanie zakończone z "Błąd".

+0

To również działa, spróbowałem Thx! – StudentOfScience

+0

Najbardziej mile widziane! Możesz również odwiedzić stronę http://gettechgo.wordpress.com/2012/12/05/exit-status-shell-scripts/, aby znaleźć więcej informacji. –

+0

@MansabUppal * musisz * ujawniać za każdym razem, gdy łączysz się z własną stroną internetową. –