Frage

ich auf einem Shell-Skript arbeitete, und will verschiedenen Exit-Codes behandeln, die ich stoßen könnte. Um zu versuchen, die Dinge aus, ich bin mit diesem Skript:

#!/bin/sh
echo "Starting"
trap "echo \"first one\"; echo \"second one\"; " 1
exit 1;

Ich glaube, ich bin etwas fehlt, aber es scheint, ich kann meine eigene „exit 1“ nicht stoppen. Wenn ich zu stoppen 0 alles versuchen funktioniert:

#!/bin/sh
echo "Starting"
trap "echo \"first one\"; echo \"second one\"; " 0
exit

Gibt es etwas, was ich über Trapping HUP (1) Exit-Code wissen sollte?

War es hilfreich?

Lösung

trap Versendungen Signale auf den Prozess empfängt (beispielsweise von einem kill), nicht auf Beendigungscodes, mit trap ... 0 für Prozess Ende reserviert ist. trap /blah/blah 0 wird entweder versenden exit 0 oder exit 1

Andere Tipps

Das ist nur ein Exit-Code, es bedeutet nicht, HUP. So Ihr trap ... 1 sucht HUP, aber der Ausgang ist nur eine Ausfahrt.

Zusätzlich zu den Systemsignale, die Sie, indem Sie trap -l auflisten können, können Sie einige spezielle Bash sigspecs verwenden: ERR, EXIT, RETURN und DEBUG. In allen Fällen sollten Sie den Namen des Signals eher als die Zahl zur besseren Lesbarkeit verwenden.

Sie können auch verwenden || Operator mit einem || b, b wird ausgeführt, wenn ein ausgefallener

#!/bin/sh

failed
{
    echo "Failed $*"
    exit 1
}

dosomething arg1 || failed "some comments"
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top