Багато прикладів для trapвикористання trap ... INT TERM EXITв задачах очищення. Але чи справді потрібно перерахувати всі три ознаки?
Посібник говорить:
Якщо SIGNAL_SPEC є EXIT (0) ARG виконується при виході з оболонки.
що, на мою думку, застосовується, чи нормально завершено сценарій, чи завершено, оскільки він отримав SIGINTабо SIGTERM. Експеримент також підтверджує мою переконання:
$ 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
Тоді чому так багато прикладів перераховують INT TERM EXIT? Або я щось пропустив і чи є випадок, коли підошва EXITпропустить?
INT TERM EXITкод очищення, виконується двічі під час отриманняSIGTERMабоSIGINTотримання.