Я написал скрипт bash, который регистрирует коды клавиш в простом файле. Я поместил код в цикл while, потому что хочу, чтобы он непрерывно регистрировался. Но если я запускаю bash-скрипт в терминале, курсор просто продолжает мигать, указывая на то, что файл действительно зацикливается. Теперь я хочу иметь возможность выйти из этого цикла изящно. Я не знаю как Ctrl + C не будет работать. Я просто закрываю терминал и принудительно завершаю процесс. Как мне выйти из цикла while, когда пользователь захочет выйти из программы?
Просто идея. Что если вы читаете значение из файла и вместо бесконечного цикла вы проверяете значение? Примерно так:
while [ "`cat mytestfile`" = 0 ]; do
//your stuff here
done
А вы просто echo 1 > mytestfile
, если хотите остановить цикл.
Если вы получаете мигающий курсор, вы, вероятно, не находитесь в цикле. Вы, вероятно, ожидаете ввода. Попробуйте Ctrl + D. Если это не сработает, откройте новый терминал и ps aux | grep command
, где command - это имя скрипта, который вы написали, а затем уничтожьте возвращенный pid.
Как было предложено этим ответом или более подробным на аналогичные вопросы на unix.stackexchange.com:
kill %%
, чтобы завершить «текущее» или «последнее остановленное» задание