如何将read命令设置为执行而无需在shell中按Enter键?

我使用下面的代码用户角色的给定分配给变量G:

read G

但是为了继续执行我的脚本,我需要按回车键.
是否有可能以某种方式将read命令设置为在收到stdin的一个字母后立即将进程显示到下一行?

解决方法

我以为dd也许可以做到这一点,所以我尝试了它并没有得到任何结果.但是,Google为我找到了 this,我在这里修改了它:

readOne () {
    local oldstty
    oldstty=$(stty -g)
    stty -icanon -echo min 1 time 0
    dd bs=1 count=1 2>/dev/null
    stty "$oldstty"
}

在脚本开头定义此函数一次,然后您可以像这样使用它:

char=$(readOne)    # get the character
echo $char         # print the character (or you can do something else with it)

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...