mehrere Bash Traps für das gleiche Signal
Wenn ich die "trap" - Befehl in der bash, dem früheren Falle, die für das gegebene signal ersetzt wird.
Gibt es eine Möglichkeit, mehr als eine Falle Feuer für das gleiche signal?
InformationsquelleAutor der Frage jes5199 | 2010-07-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Edit:
Es scheint, dass ich falsch verstanden, die Frage. Die Antwort ist einfach:
Original:
Einfach auflisten, mehrere Signale an das Ende des Befehls:
Finden Sie die Funktion im Zusammenhang mit einem bestimmten signal mit
trap -p
:Beachten Sie, dass es Listen für jedes signal getrennt, auch wenn Sie behandelt die gleiche Funktion.
Können Sie fügen Sie eine zusätzliche Signalwirkung, die einem bekannt ist, dass man dadurch:
Dies funktioniert auch, wenn es andere zusätzliche Signale verarbeitet werden, die dieselbe Funktion. In anderen Worten, man kann sagen, eine Funktion wurde bereits Handhabung drei Signale - man könnte hinzufügen, zwei weitere nur mit Bezugnahme auf bestehende ein-und anfügen von zwei mehr (wo nur einer ist oben dargestellt, nur innerhalb der schließende Anführungszeichen).
Wenn du mit Bash >= 3.2, können Sie etwas tun, wie diese zu extrahieren, die Funktion, die ein signal. Beachten Sie, dass es nicht ganz robust, da andere einfache Anführungszeichen erscheinen konnte.
Dann könnten Sie neu erstellen Ihre trap-Befehl von Grund auf, wenn Sie benötigt, um mit Hilfe der Funktion name, etc.
InformationsquelleAutor der Antwort Dennis Williamson
Technisch kann man nicht mehrere fallen, die für das gleiche signal, aber Sie können hinzufügen, einen vorhandenen trap:
trap -p
Hier ist eine bash-Funktion, die die oben:
Beispiel:
InformationsquelleAutor der Antwort Richard Hansen
Keine
Über die beste Sie tun könnten, ist, mehrere Befehle aus einem einzigen
trap
für ein gegebenes signal, aber Sie können nicht mehrere gleichzeitige fallen für ein einzelnes signal. Zum Beispiel:Die erste Zeile stellt eine Falle auf-signal 2 (SIGINT). Die zweite Zeile druckt das aktuelle fallen — Sie müssen erfassen, die standard-Ausgabe von diesem und analysieren es für das signal, das Sie möchten.
Dann können Sie den code hinzufügen, was schon da war — darauf hingewiesen, dass der Vorherige code wird wahrscheinlich eine 'exit' - Betrieb. Der Dritte Aufruf von trap löscht die trap auf 2/INT. Die Letzte zeigt, dass es keine fallen hervorragend.
Können Sie auch
trap -p INT
odertrap -p 2
drucken Sie die Falle für ein bestimmtes signal.InformationsquelleAutor der Antwort Jonathan Leffler
Ich mochte Richard Hansen ' s Antwort, aber ich interessiere mich nicht für embedded-Funktionen, so dass Sie eine Alternative ist:
InformationsquelleAutor der Antwort WSimpson
Hier ist eine weitere option:
Verwendung:
InformationsquelleAutor der Antwort Anonymoose
Ich wusste nicht, wie dass Spiel mit diesen string-Manipulationen, die verwirrend sind zu den besten Zeiten, und so kam ich mit etwas wie dieses:
(offensichtlich können Sie es ändern, für andere Signale)
InformationsquelleAutor der Antwort Oscar Byrne
Habe ich schon schrieb eine Reihe von Funktionen, die für mich ein bisschen lösen diese Aufgabe in einer bequemen Art und Weise.
traplib.sh
test.sh
Nutzung
Ausgabe
InformationsquelleAutor der Antwort Andry