linuxbashsleepctrl

Idle bash script until CTRL+c event is logged


I have a bash script which does some work, which is done fairly quick. It should then idle until the user decides to terminate it, followed by some clean-up code.

This is why I trap the CTRL+c event with the following code:

control_c()
{
  cleanup
  exit 0
}

trap control_c SIGINT

But as my script is done quite quickly I never get to purposely terminate it, so it never gets to trap the CTRL+c and run the clean-up code.

I figured I could implement an endless do while loop, with sleep at the end of the script, but I assume there is a better solution.

How can I idle a script in bash, expecting the CTRL+c event?


Solution

  • Assuming you're connected to a TTY:

    # idle waiting for abort from user
    read -r -d '' _ </dev/tty