Using traps inside a function in Linux bash script

May 03, 2021

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:

trap_01.sh

#!/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:

Output:

^Ccaught signal SIGINT^Quit (core dumped)caught signal SIGQUIT

Let’s write one more trap_02.sh shell script as follows:

trap_02.sh

#!/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 test the program as follows:

$ chmod +x trap_02.sh
$ ./trap_02.sh

Output:

Output:

Enter any string (type 'bye' to exit).Rolling...c^Ccaught signal SIGINTbyeExiting normally

Related Articles

Calculating and reducing the runtime of a script

In this article, we are going to learn how to calculate and reduce the script’s runtime. A simple time command will help in calculating the execution time.PrerequisitesBesides having a terminal open, make sure you have the necessary scripts present in your...

read more

Lorem ipsum dolor sit amet consectetur

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

four × four =