2012-12-03 22 views
10

2 python betiği a.py ve b.py var ve a.py'yi yükleyecek ve a.py işlemi bitene kadar b.py çalışmayan bir bash komut dosyası yazmak istiyorum. şey. simplisticallylinux bash betiği birden çok python çalıştırıyor

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

ama bu naif olduğunu a.py yapılır olmadığını görmek için bir onay ... Ben bunu nasıl yapacağım?

+2

Bu doğal davranış, senkronize yürütme. Aksi takdirde (arka planda çalışıp hemen b başlayabilmeniz için) bir işareti ve komutu ekleyiniz. python a.py & '. –

cevap

23

Bu, varsayılan olarak zaten birbiri ardına çalışacaktır.

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

Tersine, girişimi python a.py çalıştırmak için, ve SADECE 'piton b çalıştırmak:


, yapabileceğiniz python b.py çalıştırmak için gerekli koşul olarak başarıyla tamamlandığını python a.py kontrol etmek.'Py python a.py eğer başarıyla sona etmedi:

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

arka plan işlemleri olarak aynı anda çalıştırmak için:

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

(Yorum yapmak yanıt) - Yapabilirsin zincir bu Bir satırdaki birkaç komut için, örneğin:

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

Bu ikiden fazla olabilir mi? Ayrıca c.py, 'code' python a.py && python b.py && python c.py' code' ya da c.py için ayrı bir satır yapmak zorunda mıyım? ilk 'code' python a.py && python b.py'code' sonra' code'python b.py && python c.py'code' – StudentOfScience

+0

@StudentOfScience olabilir =) güncellenmiş cevaba bakın –

+0

&& verir hata verir ./bash.sh: line 47: b.py: komut bulunamadı, ancak python b.py fine :( – 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

}

statusa.py

b.py

Yukarıdaki onay kodunu kullanabilirsiniz.

Eğer 'a.py' yapılırsa, 'b.py' işlenir, aksi takdirde 'Error' ile çıkar.

+0

Bu da çalışır, ben denedim Thx! – StudentOfScience

+0

En çok hoşgeldin! Daha fazla bilgi için http://gettechgo.wordpress.com/2012/12/05/exit-status-shell-scripts/ adresini de ziyaret edebilirsiniz. –

+0

@MansabUppal Kendi web sitenize her bağlandığınızda * * bildirmeniz gerekir. –

İlgili konular