Как принудительно выйти из бесконечного цикла в bash-скрипте

Я написал скрипт bash, который регистрирует коды клавиш в простом файле. Я поместил код в цикл while, потому что хочу, чтобы он непрерывно регистрировался. Но если я запускаю bash-скрипт в терминале, курсор просто продолжает мигать, указывая на то, что файл действительно зацикливается. Теперь я хочу иметь возможность выйти из этого цикла изящно. Я не знаю как Ctrl + C не будет работать. Я просто закрываю терминал и принудительно завершаю процесс. Как мне выйти из цикла while, когда пользователь захочет выйти из программы?

1
задан 21 January 2013 в 21:51

3 ответа

Просто идея. Что если вы читаете значение из файла и вместо бесконечного цикла вы проверяете значение? Примерно так:

while [ "`cat mytestfile`" = 0 ]; do
    //your stuff here
done

А вы просто echo 1 > mytestfile, если хотите остановить цикл.

0
ответ дан 21 January 2013 в 21:51

Если вы получаете мигающий курсор, вы, вероятно, не находитесь в цикле. Вы, вероятно, ожидаете ввода. Попробуйте Ctrl + D. Если это не сработает, откройте новый терминал и ps aux | grep command, где command - это имя скрипта, который вы написали, а затем уничтожьте возвращенный pid.

0
ответ дан 21 January 2013 в 21:51

Как было предложено этим ответом или более подробным на аналогичные вопросы на unix.stackexchange.com:

  • Нажмите Ctrl + Z, чтобы остановить задание и перевести его в фоновый режим
  • kill %%, чтобы завершить «текущее» или «последнее остановленное» задание
1
ответ дан 4 September 2020 в 12:37

Другие вопросы по тегам:

Похожие вопросы: