Приветствуем всех и благодарим заранее.Избегайте ошибок ввода пользователем
У меня есть вопрос для вас. В сценарии оболочки, которые я сделал для управления запуском/остановкой кластера приложений JBoss я использую функцию, чтобы ответить на различные вопросы в ходе процесса, который рассказывает WATH сценария, чтобы сделать
function ThreeOptions
{
ACT=0
read -n 1 -s answ
case ${answ:0:1} in
n|N) echo "Operation skipped"
ABRT=2
;;
e|E|x|X) echo "Operation aborted"
ABRT=3
CloseProcedure
;;
y|Y|*) echo "...ok..."
ACT=1
;;
esac
}
Функции написано таким образом так что одно нажатие буквы выберет опцию, а «Enter/Return» (ну и все остальные клавиши действительно) будет использовать значение по умолчанию.
Как я могу предотвратить считывание команды чтения непреднамеренно двойных/нескольких клавиатурных входов (иначе неряшливых рук).
EX.
echo -en " Shall I close all Jboss processes ? [Y/n/e]: "
ThreeOptions
...
echo -en " Shall I do some other thing?"
ThreeOptions
...
Если я нажимаю «уу» Я заметил, что я ответить на актуальный вопрос и на следующий тоже.
PS: Первый вопрос, так что я надеюсь, что это понятно, и что я не слишком много писать :)
Не можете ли вы просто ** сбросить ** ввод перед печатью опции? например с 'read -t 1 -n 10000 discard'? –
Да ... это было именно то, что я искал! Спасибо большое! Просто добавлено -s, чтобы возможные множественные выходы не отображались на экране читать -t 1 -n 10000 -s discard –