程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了bash脚本-阅读单个击键,包括特殊键Enter和空格大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决bash脚本-阅读单个击键,包括特殊键Enter和空格?

开发过程中遇到bash脚本-阅读单个击键,包括特殊键Enter和空格的问题如何解决?下面主要结合日常开发的经验,给出你关于bash脚本-阅读单个击键,包括特殊键Enter和空格的解决方法建议,希望对你解决bash脚本-阅读单个击键,包括特殊键Enter和空格有所启发或帮助;

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

read -d'' -s -n1

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

解决方法

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

大佬总结

以上是大佬教程为你收集整理的bash脚本-阅读单个击键,包括特殊键Enter和空格全部内容,希望文章能够帮你解决bash脚本-阅读单个击键,包括特殊键Enter和空格所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。