不知道我应该把它放在还是unix.stackexchange上,但是我在这里发现了一些[类似的问题,所以就到这里了。
我正在尝试创建一个由.bashrc调用的脚本,该脚本允许我根据单个击键选择两个选项之一。通常这并不难,但是我希望与这两个选项相对应的两个键分别为空格键和Enter键。
这是到目前为止我得到的:
#!/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 btw。
尝试将读取定界符设置为空字符串,然后检查内置的$ REPLY变量:
read -d'' -s -n1
由于某种原因,我无法使它正常工作以指定变量。