2016-03-24 13 views
0

Bazı dizinlerden birden çok komut dosyasını (bash & python) çağıran bir bash komut dosyası var.Hata/istisna oluştuğunda iptal sorunu?

Komut dosyası herhangi bir hata/istisna atarken onu iptal etmek istiyorum.

#!/bin/bash 

/usr/bin/test.sh /usr/1/sample.sh /usr/2/temp.py 

exit 0 

Bunu nasıl gerçekleştireceğinize dair herhangi bir öneriniz var mı?

FYI: Bash komut dosyasında yeni başlayan kişiyim.

+1

Her şey, komut dosyanızın çağıran komut dosyalarının çıkış ve/veya çıkış durumuna bağlıdır. Bazı programlar çıktı hataları verir ancak çalışmaya devam eder, bazı programlar başarı için 0 çıkış durumu döndürür ve diğerleri sıfırdan farklı bir başarıya geri döner. Bazı programlar, std hatasına düzenli çıktı verir. –

+1

Ayrıca, birden çok komut dosyasını çağıran kodunuz, aslında bir komut dosyasını çağırır ve diğer ikisini de argüman olarak geçirir. Bash betik kılavuzları için Google'da arama yapardım (bazı gerçekten iyi, kılavuz bulmak kolay) ve bunları okuyabilirim. –

cevap

1

Sen script üstündeki set -e koyabilirsiniz:

-e errexit  If not interactive, exit immediately if any 
        untested command fails. The exit status of a com‐ 
        mand is considered to be explicitly tested if the 
        command is used to control an if, elif, while, or 
        until; or if the command is the left hand operand 
        of an “&&” or “||” operator. 

Bu işlem sadece çalışma arızası olmayan sıfır bir çıkış koduyla komutlar çıkış birini eğer. İyi huylu programlar, her zaman başarı ile'dan çıkmalı ve eğer sizinkini yapmıyorsanız, muhtemelen bunu düzeltmek isteyebilirsiniz.

ben bunu yapmak beklediğiniz tamamen emin değilim: Bu iki argümanlarla bir komut (/usr/bin/test.sh) çalışacak

/usr/bin/test.sh /usr/1/sample.sh /usr/2/temp.py 

yana, muhtemelen ayrı satırlara içine koymak istiyorum.