当前位置: 首页 > 面试题库 >

bash脚本-阅读单个击键,包括特殊键Enter和空格

窦哲彦
2023-03-14
问题内容

不知道我应该把它放在还是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

由于某种原因,我无法使它正常工作以指定变量。



 类似资料:
  • 问题内容: 我创建了一个非常简单的bash脚本,该脚本运行一些命令。这些命令之一在运行时需要用户输入。即它询问用户“您想等等吗?”,我只想向其发送回车按键,以便脚本将完全自动化。 我将不必在运行时等待输入或其他任何东西,它足以发送按键,输入缓冲区将处理其余部分。 问题答案: 或利用echo生成的隐式换行符(感谢Marcin) 现在我们可以简单地使用以下选项: ,请勿在每次测试后等待按键 即

  • 问题内容: 我正在使用Selenium Server(v2.21)和SeleniumJavaClient(v.2.21.0)来自动化Web表单,该表单需要在每次输入后都按下键,因为字段是根据输入的值公开的。因此,根据此处的解决方案,我一直在尝试不同的方法以在表单中输入字符串并按-这是我尝试过的方法: 它会 看起来 像这是最合理的解决方案(),但是编译器抛出,如果你不添加一个错误,因为期待一个字符串

  • 问题内容: 我目前正在尝试为Android创建一个小的远程应用程序,以控制PC上的MediaPlayer(如Rythmbox)。 大多数媒体播放器都可以理解键盘上的特殊键(例如“播放/暂停”或“下一个/上一个”)。我的想法是Android App向PC发送命令(例如“ pause”)。在PC上运行一个普通的Java应用程序,该应用程序接收此命令并模拟对此特殊按钮的按键操作。 这样做的好处是,您可以

  • 问题内容: 有没有办法做这样的事情: 但是,不是调用和,而是直接传递变量? 所需的输出是: 问题答案: 不适用于array_map,因为它不处理键。 array_walk可以: 但是,它确实会更改作为参数给定的数组,因此它不完全是函数式编程(因为您有这样标记的问题)。而且,正如注释中指出的那样,这只会更改数组的值,因此键将不是您在问题中指定的键。 如果需要,您可以编写一个函数来固定自己之上的要点,

  • 说明 这是一个非常特殊的快捷键,有必要拿出来单独讲。 强烈注意:此快捷键跟光标所在位置有着很严重关联关系,光标放的位置不同,使用此快捷键出来的菜单选项完全不一样。 可以从几个思路:Java 类、JSP、HTML、JavaScript、CSS、SQL 等文件类型 下面演示的各个功能是基于:IntelliJ IDEA 2016.1.1,如果你使用早期版本,可能不一定有对应的功能。 智能辅助 在 接口类

  • 问题内容: 我有一个文本输入和一个按钮(请参阅下文)。当在文本框中按下键时,如何使用JavaScript 触发按钮的click事件? 当前页面上已经有一个不同的“提交”按钮,因此我不能简单地将该按钮设为“提交”按钮。而且,如果 只从该一个文本框中按下该按钮,我 只 希望按键单击此特定按钮,没有其他选择。 问题答案: 在jQuery中,以下将起作用: 或在纯JavaScript中,以下方法将起作用: