Много примеров для 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получен.