ตัวอย่างมากมายสำหรับtrap
ใช้trap ... INT TERM EXIT
สำหรับงานการล้างข้อมูล แต่มันจำเป็นจริงๆหรือไม่ที่จะแสดงรายการทั้งสาม sigspecs?
คู่มือบอกว่า:
หาก 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
ได้รับ