1

У меня есть сценарий, который вызывает проблему, я свел его к этому;

#/bin/bash
read -t 1 -p 'Wanna continue?'
less +F readTimeout.sh
echo 'Wont get printed'

Исходный сценарий работал, предлагая пользователю продолжить, но после ожидания в течение пяти секунд (в данном случае, одного) он продолжится сам по себе.
Затем он переходит к хвосту из файла журнала (в данном случае для демонстрационных целей).
Затем он должен выполнить остальные команды после того, как пользователь less закрывается.

Что ж, когда less находится в tail режиме, вам нужно нажать ctrl+c, чтобы он не следовал за файлом (тогда вы можете прокручивать / искать то, что находится в less пока, или Shift+f, чтобы следовать, или Q, чтобы выйти),

Проблема этого сценария в том, что когда вы ^C убивает less , возвращает вас к приглашению (то есть остальные команды не выполняются) и останавливает вывод всего, что вы вводите (если вы нажмете Enter, ваши команды фактически выполняются записано в консоль, правда)!

Без включения -t read (или если вы ответите до истечения времени ожидания) все работает нормально.
Есть идеи, почему это происходит и / или как с этим бороться? До сих пор я прибегал к тому, чтобы просто заставить пользователя ответить на приглашение (т.е. убрать флаг timeout из read).

PS
Это не зависит от эмулятора терминала (проверено на konsole и xterm).
И я попытался поместить stty sane после строки read на случай, если это будет исправлено.

0