微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将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)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐