Você precisaria colocar esse código em um loop infinito, como:
while 1; do
# Rest of code
...
done
Para parar quando Ctrl + C é atingido, o que você está fazendo é capturar um sinal (concretamente, SIGINT
). Você precisaria definir um trap
para que seja acionado quando você acertar essa combinação de chaves.
Para mais informações sobre armadilhas, você pode dar uma olhada aqui , que inclui um exemplo SIGINT
e como você pode imprimir qualquer coisa depois de pegá-lo.
trap [COMMANDS] [SIGNALS]
This instructs the trap command to catch the listed SIGNALS, which may be signal names with or without the SIG prefix, or signal numbers. If a signal is 0 or EXIT, the COMMANDS are executed when the shell exits. If one of the signals is DEBUG, the list of COMMANDS is executed after every simple command. A signal may also be specified as ERR; in that case COMMANDS are executed each time a simple command exits with a non-zero status. Note that these commands will not be executed when the non-zero exit status comes from part of an if statement, or from a while or until loop. Neither will they be executed if a logical AND (&&) or OR (||) result in a non-zero exit code, or when a command's return status is inverted using the ! operator.