不确定我是否应该将其放在 stackoverflow 或 unix.stackexchange 上,但我发现了一些similar 问题在这里,就这样吧。
我正在尝试创建一个由 .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、空格、退格键和 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。
尝试将读取分隔符设置为空字符串,然后检查内置 $REPLY 变量:
read -d'' -s -n1
由于某种原因,我无法让它工作指定变量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)