Using traps in function
If we use the trap command inside a function in 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
doneLet'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 Shell script trap_02.sh 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 'dough' to exit)."
while true
do
echo "Rolling...\c"
read string
if [ "$string" = "dough" ]
then
break
fi
done
echo "Exiting normally"Let's test the program as follows...