Я прочитал так много ответов, и все они просто предлагают убить сценарий или отправить его на задний план и т.д. Я хочу, чтобы

в то время как правда

что-то...

если (Ctrl + C нажата перерыв)

сделано эхо "Из цикла"

Я нахожусь вне цикла, потому что были нажаты ctrl+c, и поэтому я могу делать другие вещи здесь, не выходя из сценария ....

И этот вопрос не является дубликатом, потому что я искал несколько часов, и ни один ответ не дает мне то, что я хочу. Это "из цикла" никогда не печатается, я пробовал так много примеров из разных ответов!

Информация: Я использую (1) Scientific Linux SL выпуск 5.4 (Boron), (2) Ubuntu 16.04

Изменить: я хочу, чтобы этот точный код работал

#!/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

1 ответ1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .