2016-11-15 6 views
1

Ich habe ein Programm, das den Fehlercode eines Skripts/Befehls prüft, die ich zur Verfügung stelle. In einigen Fällen gibt die Befehlszeile einen Warnfehlercode zurück, den ich ignorieren möchte (Beenden mit 0 statt 5). Ich möchte, dass andere Fehlercodes die gleichen passieren und dass dies so einfach wie möglich ist (um einen einzigen Zeilenbefehl zu behalten).bash ignorieren spezifischen Fehlercode (pytest keine Tests Warnung Fehlercode 5)

Ich habe versucht mit pytest || [ $? -eq 5 ], die Fehlercode 5 aus dem Befehl ignoriert, sondern alle Fehlercodes ungleich Null mit 1 ersetzen (anstelle der eigentlichen Fehlercode).

Ich denke, jemand mehr Erfahrung als ich mit bash mit einer besseren Lösung kommen könnte schneller als ich

einige spezifischere Kontext:

ich pytest bin mit meinen Projekten zu testen. Einige von ihnen haben im Moment keine Tests und das Standardverhalten von pytest besteht darin, das als Fehler zu behandeln (Fehlercode 5). Ich möchte, dass Fehler als Erfolg behandeln. Eigentlich würde Ich mag Travis Gefahr, dass Fehler als Erfolg.

Danke!

Antwort

2

Mit arithmetischen Ausdruck:

exit $(($? == 5 ? 0 : $?)) 
2

Sie müssen nur den entsprechenden Status abfangen, testen und (wieder) erhöhen.

command 
case $? in 
    5) exit 0 ;; 
    *) exit ;; 
esac 
0

landete ich Sie folgendermaßen vorgehen:

pytest ... ; err=$? ; if (($err != 5)) ; then exit $err ; fi 

aus irgendeinem Grund Weil Ruslan Antwort Probleme hatte zu entkommen, wenn Travis es ausgeführt wird, und chepner Antwort scheint nicht so sauber.

Verwandte Themen