gpt4 book ai didi

linux - bash 脚本 - 读取单个击键,包括特殊键输入和空格

转载 作者:IT王子 更新时间:2023-10-29 00:20:27 24 4
gpt4 key购买 nike

不确定我是否应该将其放在 stackoverflow 或 unix.stackexchange 上,但我发现了一些 similar questions在这里,就这样。

我正在尝试创建一个由 .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

所以 enter 和 space 都会导致一个空的 SELECT。没有办法区分两者。我试图将 -d 'D' 添加到读取选项,但这没有帮助。也许有人可以为我指出正确的方向。

顺便说一句,bash 版本是 4.2。

最佳答案

尝试将读取分隔符设置为空字符串,然后检查内置的 $REPLY 变量:

read -d'' -s -n1

出于某种原因,我无法让它在指定变量时工作。

关于linux - bash 脚本 - 读取单个击键,包括特殊键输入和空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22842896/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com