クリーンアップタスクにtrap
使用する多くの例trap ... INT TERM EXIT
。しかし、3つのsigspecをすべてリストすることは本当に必要ですか?
マニュアルによると:
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
を受け取ったときに2回実行されることに注意してください。