2016-04-13 16 views
0

Sonunda iş akışını çağıran başka bir betik run_workflow.sh dosyasını çağıran bir wrapper.sh betiğim var. Run_wrklow.sh hatasıyla uğraşmak istiyorum ... iş akışı başarıyla yürütüldüğünde, başka bir iş akışını tetikleyen run_workflow2.sh komut dosyasını çağırmam gerekiyor. İşte Subshell komut dosyası için unix komutunda hata oluşuyor

örnek kod ... ben bu kodu deneyin Ancak ben başarısız durumunu iade edebilir değilim nasıl ele hatalar

wrapper.sh

sh run_workflow.sh #trigger workflow1 
if [ $? -ne 0 ]; then 
echo "Workflow Failed" 
else 
echo "Wrokflow Success" 
sh run_workflow2.sh #trigger workflow2 
    if [ $? -ne 0 ]; then 
    echo "Workflow2 Failed" 
    else 
    echo "Workflow2 Success" 
    fi 
fi 

beni önerin.

+2

Bir şey başarısız olduğunda "run_workflow.sh" sıfır olmayan bir dönüş koduyla çıkıyor mu? –

cevap

1

İşte önerim. Açıkça $?'u sınamanıza gerek yoktur, sözdizimi if'un bir komutu izler ([test komutudır). I stderr (>&2) için hata iletileri yankı

exit_value=1 # default failure 

if sh run_workflow.sh #trigger workflow1 
then 
    echo "Wrokflow Success" 

    if sh run_workflow2.sh #trigger workflow2 
    then 
     echo "Workflow2 Success" 
     exit_value=0 
    else 
     echo "Workflow2 Failed" >&2 
    fi 
else 
    echo "Workflow Failed" >&2 
fi 

exit $exit_value 

not edin. exit komutu, 0-255 arasında bir tamsayı olan bir hata döndürür. Sözleşmeye göre, başarıya 0 ve hata durumunda 1'e dönüyoruz.

Tüm deneyimli programcıların yaptıkları koduma da girerim.

+0

Daha önemli: 'run_workflow.sh' değiştir, böylece bazı hatalardan sonra 1'den çıkacaktır. –

+0

@WalterA: Zaten paketin içinde $ '' test edildiğinden beri durumun böyle olduğunu varsaymıştım. Belki bu iyimserdi. – cdarke

İlgili konular