Ctrl + C para quebrar um loop infinito e, em seguida, fazer algo fora do loop em um script bash sem sair?

0

Eu já li muitas respostas e todas elas apenas sugerem para matar o script ou enviá-lo para o segundo plano, etc. O que eu quero é

enquanto verdadeiro fazer

alguma coisa ...

if (ctrl + c é pressionado break)

feito echo "Fora do loop"

Estou fora do loop porque o ctrl + c foi pressionado e, portanto, posso fazer outras coisas aqui sem sair do script ....

E esta pergunta não é uma duplicata porque eu pesquisei por horas e nenhuma resposta me dá o que eu quero. Que "Out of the loop" nunca é impresso, eu tentei muitos exemplos de várias respostas!

Info: Eu uso (1) o Scientific Linux SL versão 5.4 (Boro), (2) Ubuntu 16.04

Edit: quero que este código exato funcione

#!/bin/bash

loopN=0

while true
do

echo "Loop Number = $i"
i=$(($i+1))

#I want to break this loop when Ctrl+C is pressed

done

#Ctrl+C has been pressed so I am outside the loop going to do something..

echo "Exited the loop, there were $i number of loopsexecuted !"
#here I will execute some commands.. let's say date
date

#and then I will exit the script
    
por quanta 24.02.2017 / 12:44

1 resposta

2

#!/bin/bash

#function called by trap
do_this_on_ctrl_c(){
    echo "Exited the loop, there were $i number of loops executed !"
    date
    exit 0
}

trap 'do_this_on_ctrl_c' SIGINT

loopN=0

while true
do
    echo "Loop Number = $i"
    i=$(($i+1))
done
    
por 24.02.2017 / 15:50