ตัวอย่างมากมายสำหรับ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ได้รับ