Wie implementiere ich die Behandlung von ctrl+ cin Bash-Skripten, sodass das Skript unterbrochen wird, sowie den aktuell ausgeführten Befehl, der vom Skript gestartet wird?
(Stellen Sie sich vor, es gibt ein Skript, das einen lang laufenden Befehl ausführt. Der Benutzer drückt ctrl+ cund unterbricht den Befehl, aber das Skript wird fortgesetzt.) Ich muss mich so verhalten, dass beide getötet werden.
bash
shell-scripting
kolypto
quelle
quelle
bg
, ihn beenden oder im Vordergrund mit fortsetzenfg
. Siehe den Abschnitt zur bash-ManpageJOB CONTROL
.Antworten:
Sie tun dies, indem Sie eine Unterroutine erstellen, die Sie aufrufen möchten, wenn SIGINT empfangen wird, und die Sie ausführen müssen
trap 'subroutinename' INT
.Beispiel:
quelle
EXIT
in Fällen, in denen Sie etwas ausführen möchten, einen Trap ausführen können, wenn das Skript beendet wird, unabhängig davon, wie es gestoppt wurde. (KILL