У меня есть старый сценарий оболочки, который нужно переместить в bash. Этот скрипт печатает ход какой-либо активности и ждет пользовательских команд. Если в течение 15 секунд пользователь не предпринимает никаких действий, он перерисовывается с новым прогрессом, и таймер снова запускается. Вот моя проблема:Linux bash - перепечатка пользовательского ввода
Я пытаюсь использовать read -t 15 myVar
- таким образом, через 15 секунд цикл ожидания будет перезапущен. Существует, однако сценарий, который приносит мне проблему:
- экран перерисовывается и сценарий ожидает ввода (печатает «
Enter command:
») - пользователь вводит
foo
, но не давит войти - через 15 секунд экран снова перерисованы и сценарий ожидает ввода - отметить, что
foo
не отображается в любом месте на экране (гравюр «Enter command:
») - пользователь вводит
bar
и прижимает введите
В настоящий момент переменная $myVar
содержит «foobar
».
Что мне нужно? Я ищу способ найти первую строку, набранную пользователем, поэтому я смог повторно отобразить ее после обновления статуса. Таким образом, пользователь увидит: Enter command: foo
В Solaris я мог бы использовать stty -pendin
, чтобы сохранить вход в какой-то буфер, и после обновления запуска stty pendin
, чтобы получить этот вход из буфера и распечатать его на экране.
Есть ли эквивалент Linux для stty pendin
? Или, может быть, вы знаете какое-то решение bash для моей проблемы?
Чтобы уточнить, вам требуется, чтобы через 15 секунд экран был перерисован? Зачем? – Sorpigal
Да, мне нужно, чтобы экран перерисовывался каждые 15 секунд. Этот скрипт контролирует ход выполнения некоторой процедуры на сервере. Когда каждый пользователь перерисовывает, как он прогрессирует. Без тайм-аута пользователю приходилось время от времени нажимать, чтобы видеть изменения, которые мне не нужны. –