Как выйти из цикла bash с помощью ввода с клавиатуры?

Как выйти из цикла bash с помощью ввода с клавиатуры?

У меня есть bash loppкак

#!/bin/bash
for (( c=0; c<=1000000; c++ ))
do  
SOME STUFF HERE
done

Я прерываю длинный цикл с помощью ввода с клавиатуры, как Ctrl+Cбудто Ctrl+Cпросто завершаю скрипт. Я ищу альтернативу для продолжения текущего цикла и прерывания цикла после завершения выполнения STUFFв текущем цикле.

решение1

Один из способов — нажать trapControl-C и breakвыйти из loop, как в:

#!/bin/bash
trap break INT
for (( c=0; c<=1000000; c++ ))
do  
SOME STUFF HERE
done
echo "I have broken out of the interminably long for loop"
trap - INT
sleep 1
echo "END."

Более подробно о том, как это работает, вот ключевые строки:

trap break INT

а также

trap - INT

Мы используем «break», чтобы сообщить ловушке, что мы хотим запустить break, чтобы прервать цикл, когда генерируется сигнал INT(прерывание, также известное как ) (что происходит при нажатии Ctrl+C).SIGINT

Вместо «break» мы могли бы поместить произвольные команды оболочки в кавычки, и они будут выполнены при генерации заданного сигнала (в нашем случае INT).

Наконец, мы снова запускаем ловушку, чтобы -восстановить обработчик «INT» до действия по умолчанию.

Вот еще несколько ресурсов для дальнейшего чтения и примеров:

Связанный контент