सफाई कार्यों के लिए 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
प्राप्त होने पर।