So, let's talk about bash scripting. You may wonder, how to prevent CTRL+C to interrupt your shell script? But it depend on something actually. How long your bash script? If it just took 1-3 seconds, you may don't need this function actually. But, how about if it took 10 - 60 seconds to finish? It will be "fatal" it's interrupted by CTRL+C, especially in critical function.
I got the script like this
#!/bin/bash while sleep 1; do echo "I'm still alive" done
This script will spawn output "I'm still alive" EVERY second. And exit 0 will never be reach, which means this script will never been finish FOREVER, EXCEPT you interrupt it by pressing CTRL+C or CTRL+Z.
How to tell if CTRL+C is pressed?
Well let's start from trap function. Let's add trap function in this script.
#!/bin/bash
interrupt()
{
echo "CTRL C is being pressed"
}
trap 'interrupt' INT
while true; do
echo "I'm still alive"
done
When we press CTRL C
CTRL C is being pressed, however the script still running. You can stop this by pressing CTRL + Z, then CTRL + D.
Let's make this being more friendly, by asking users whether they want to exit or not.
#!/bin/bash
interrupt()
{
echo "CTRL C is being pressed"
ask=true
while [ $ask == "true" ]
do
echo -ne "Do you really want to exit (y/n): "
read answer
if [ $answer == "y" ]; then
echo "Exiting..."
exit 0
ask=false
elif [ $answer == "n" ]; then
echo "Rock on"
ask=false
else
echo "Wrong input pals..."
ask=true
fi
done
}
trap 'interrupt' INT
while true; do
sleep 1
echo "I'm still alive"
done
The script will ask users, whether they want to exit or not. If they type y (which mean yes), the script will exit with 0 code (which mean has finished). If they type n (which mean no), the script will go on. Let's try this again.
Pressing y
Pressing n


