Bash Scripting, Ответить на нажатие клавиш
Я создал крошечное меню для использования в терминале Bash с несколькими вариантами выбора с помощью цифровых клавиш.
#!/bin/bash
PS3='Teleport to ... '
options=("→ option 1" "→ option 2" "Quit")
select opt in "${options[@]}"
do
case $opt in
"→ option 1")
echo "option 1"
break
;;
"→ option 2")
echo "option 2"
break
;;
"Quit")
break
;;
*) echo invalid option
break
;;
esac
done
На данный момент мне все еще нужно подтвердить выбор нажатием Enter. Можно ли заставить скрипт реагировать на ввод первой нажатой клавиши напрямую?
2 ответа
Решение
read -n 1
читает один символ Вы не можете использовать select
с этим, тем не менее, так что вы должны написать while
Зацикливайся.
Да, с bash
(и не sh
!) вы можете использовать что-то вроде:
_KEY=
read -d '' -sn1 _KEY