我不确定我应该把这个问题放在stackoverflow还是unix.stackexchange上,但我在这里找到了一些类似问题(链接)(链接),所以这里就介绍一下。
我正在尝试创建一个脚本,由.bashrc调用,允许我根据单个按键选择两个选项中的一个。通常情况下这并不难,但我想要对应于两个选项的两个按键分别是空格和回车。
这是我目前已经得到的:
以下是我按下回车、空格、退格和x时得到的输出结果:
我正在尝试创建一个脚本,由.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
以下是我按下回车、空格、退格和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。