Ich muss mich auf einige separate Ausführungen in einem Skript verlassen und möchte sie nicht alle in einer hässlichen "if" -Anweisung bündeln. Ich möchte den Exit-Code '$?' jeder Ausführung und fügen Sie es hinzu; am Ende, wenn dieser Wert über einem Schwellenwert liegt - möchte ich einen Befehl ausführen.
Pseudocode:
%Vor%Problem: Obwohl das Internet etwas anderes behauptet, weigert bash sich, RESULT und $ zu behandeln. als ganze Zahl. Was ist die korrekte Syntax?
Danke.
Vielleicht möchten Sie sich das eingebaute trap
ansehen, um zu sehen, ob es hilfreich wäre:
oder
%Vor%Sie können eine Falle für Fehler wie folgt einstellen:
%Vor% Wenn Sie die Fehler (und nur wenn es sich um Fehler handelt) wie folgt zählen, anstatt " $?
" zu verwenden, müssen Sie sich keine Gedanken über Rückgabewerte machen, die nicht null oder eins sind. Ein einzelner Rückgabewert von beispielsweise 127 würde Sie sofort über Ihre Schwelle werfen. Sie können trap
s auch für andere Signale zusätzlich zu ERR
registrieren.
Ein kurzer Versuch und eintauchen in bash info sagt:
%Vor%Da Sie dem Ergebnis mehrmals hinzufügen, können Sie am Anfang wie folgt deklarieren:
%Vor%sieht viel sauberer aus.
declare -i
sagt, dass die Variable Integer ist.
Alternativ können Sie vermeiden, deklarieren und arithmetische Ausdrücke Klammern verwenden:
%Vor%Hier sind einige Möglichkeiten, um einen Zusatz in bash oder sh durchzuführen:
%Vor%Und einige andere nur in bash:
%Vor%Wie auch immer, der Exit-Status bei einem Fehler ist nicht immer 1, und sein Wert hängt nicht von der Fehlerstufe ab. Im allgemeinen Fall ist es wenig sinnvoll, die Summe der Status gegen einen Schwellenwert zu überprüfen.