If a signal or softwareinterruptis generated while the script is running, then we can define what action is performed by that interrupt handler using thetrap
command. Thetrap
command helps us in re-assigning the system response to a particular signal through the user-defined function or commands.
The syntax to use thetrap
command is either of the following:
$ trap 'command; command' signal-name
$ trap 'command; command' signal-number
The usage as per the preceding syntax is as follows:
trap 'echo "You pressed Control key" ' 0 1 2 15
This will print the message You pressed Control key
, when any of the signals SIGINT
, SIGHUP
, or SIGTERM
are received by the process:
trap 'rm file.tmp; echo "file.tmp is deleted" ' INT TERM HUP
When any of theSIGINT
,SIGTERM
, orSIGHUP
signals arrive, then they will delete thefile.tmp
file and print the message.
While using thetrap
command, if the command string is surrounded by double quotes, then the command substitution and variable substitution will be done during thetrap
command execution. If the commandstring
is enclosed in single quotes then the command substitution and variable substitution will be done when the signal is detected.