Using traps inside a function
If we use the trap command inside a function in the script, then the reassigned signal behavior will become global inside a script. We can check this effect in the following script example.
Let's write shell script trap_01.sh as follows:
#!/bin/bash
trap "echo caught signal SIGINT" SIGINT
trap "echo caught signal SIGQUIT" 3
trap "echo caught signal SIGTERM" 15
while :
do
sleep 50
done Let's test the program as follows:
$ chmod +x trap_01.sh$ ./trap_01.sh
Output:
^Ccaught signal SIGINT^Quit (core dumped)caught signal SIGQUIT
Let's write one more trap_02.shshell script as follows:
#!/bin/bash
trap "echo caught signal SIGINT" SIGINT
trap "echo caught signal SIGQUIT" 3
trap "echo caught signal SIGTERM" 15
trap "echo caught signal SIGTSTP" TSTP
echo "Enter any string (type 'bye' to exit)."
while true
do
echo "Rolling...c"
read string
if [ "$string" = "bye" ]
then
break
fi
done
echo "Exiting normally" Let's...