Viele Beispiele für die trap
Verwendung trap ... INT TERM EXIT
für Bereinigungsaufgaben. Aber ist es wirklich notwendig, alle drei Zeichen aufzuzählen?
Das Handbuch sagt:
Wenn ein SIGNAL_SPEC EXIT (0) ist, wird ARG beim Verlassen der Shell ausgeführt.
was meines erachtens zutrifft, ob das script normal beendet wurde oder weil es empfangen wurde SIGINT
oder SIGTERM
. Ein Experiment bestätigt auch meine Überzeugung:
$ cat ./trap-exit
#!/bin/bash
trap 'echo TRAP' EXIT
sleep 3
$ ./trap-exit & sleep 1; kill -INT %1
[1] 759
TRAP
[1]+ Interrupt ./trap-exit
$ ./trap-exit & sleep 1; kill -TERM %1
[1] 773
TRAP
[1]+ Terminated ./trap-exit
Warum listen dann so viele Beispiele alle auf INT TERM EXIT
? Oder habe ich etwas verpasst und gibt es einen Fall, in dem eine Sohle EXIT
fehlen würde?
INT TERM EXIT
der Bereinigungscode zweimal ausgeführt wird, wennSIGTERM
oderSIGINT
empfangen wird.