Багато прикладів для 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
отримання.