Viele Beispiele für die trapVerwendung trap ... INT TERM EXITfü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 SIGINToder 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 EXITfehlen würde?
INT TERM EXITder Bereinigungscode zweimal ausgeführt wird, wennSIGTERModerSIGINTempfangen wird.