'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
2
A
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
Ş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