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
Другие вопросы по тегам