Не уверен, следует ли мне поместить это в stackoverflow или unix.stackexchange, но я нашел некоторые похожие вопросы здесь, так что вот.
Я пытаюсь создать сценарий, который будет вызываться .bashrc, который позволяет мне выбрать один из двух вариантов на основе одного нажатия клавиши. Обычно это не сложно, но я хочу, чтобы две клавиши, соответствующие двум параметрам, были пробелом и вводом.
Вот что я получил до сих пор:
#!/bin/bash
SELECT=""
while [[ "$SELECT" != $'\x0a' && "$SELECT" != $'\x20' ]]; do
echo "Select session type:"
echo "Press <Enter> to do foo"
echo "Press <Space> to do bar"
read -s -N 1 SELECT
echo "Debug/$SELECT/${#SELECT}"
[[ "$SELECT" == $'\x0a' ]] && echo "enter" # do foo
[[ "$SELECT" == $'\x20' ]] && echo "space" # do bar
done
Следующий вывод — это то, что я получаю, если нажимаю Enter, пробел, Backspace и x:
:~$ bin/sessionSelect.sh
Select session type:
Press <Enter> to start/resume a screen session
Press <Space> for a regular ssh session
Debug//0
Select session type:
Press <Enter> to start/resume a screen session
Press <Space> for a regular ssh session
Debug//0
Select session type:
Press <Enter> to start/resume a screen session
Press <Space> for a regular ssh session
Debug//1
Select session type:
Press <Enter> to start/resume a screen session
Press <Space> for a regular ssh session
Debug/x/1
Таким образом, ввод и пробел приводят к пустому SELECT. Никак не отличить их друг от друга. Я пытался добавить -d 'D' к параметрам чтения, но это не помогло. Может быть, кто-то может указать мне в правильном направлении.
Версия bash будет 4.2 кстати.