2016-04-01 15 views
2

'da başarısız olursa false değerini döndürür Bir dizi bundle exec rspec komutu yürütecek bir betik ayarlıyorum ve bunlardan herhangi biri başarısız olursa false döndürmesini istiyorum. Ama hala tüm testleri yürütmesini istiyorum. Bir ya da test ifadesi olmadan bunu başarmanın daha kısa bir yolu var mı?Çoklu bash komutlarını çalıştırın ve bunlardan biri bash

+1

Şimdiye kadar neler var? tek düşünebildiğim şey, tüm $ $ dönüş kodlarının bir dizisine sahip olması ve script döngüsünün sonunda ve herhangi bir dönüş kodunun 0'a eşit olmaması durumunda, false'yi false olarak ayarlamak ve betikten çıkmak ve çıkmak. – jgr208

cevap

-1

Çıkış kodlarını bir değişkende takip edin ve ondan çıkın. Ne kırdı sorun giderme için satır numarasını ekledim.

declare -i r_code=0 # return code 
command1 || { r_code+=$?; echo "ERROR at $LINENO 
} 

command2 || { r_code+=$?; echo "ERROR at $LINENO 
} 

exit $r_code 
+0

@ jgr208 tam olarak doğru değil - eğer tüm komutlar hatalarınızı kaydeden işlevler ise, ihtiyacınız olan tüm bilgilere sahip olursunuz. OP, onun için tüm senaryoyu tasarlamaya değil, hatalarla çıkmayı istedi ve daha fazla bilgi verilemedi. – SaintHax

-1

Bu, tüm dönüş kodları geçmesi ve edecek döngü için bir ilk görüldüğü başarısız dönüş koduyla çıkılacak başarısız biri eğer.

i=0 
rc=0 
command1 
rcode[i]=$? 
i=i+1 
command2 
rcode[i]=$? ... n 
for i in "${rcode}" 
do 
    if [ $i -ne 0 ]; then 
     rc=$i 
     break 
    fi 
done 
exit $rc