首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在shell中设置执行读取命令而无需按Enter按钮?

如何在shell中设置执行读取命令而无需按Enter按钮?
EN

Stack Overflow用户
提问于 2009-11-29 18:25:57
回答 2查看 2.5K关注 0票数 5

我使用下面的代码将用户字符给定的赋值给变量G:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
read G

但是,为了继续执行我的脚本,我需要按enter按钮。有没有可能以某种方式设置读命令,使其在收到来自标准输入的一个字母后立即显示进程前进到下一行?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-11-29 20:05:50

我认为dd可能可以做到这一点,所以我尝试了一下,但什么也没做。然而,谷歌为我找到了this,我在这里对其进行了修改:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
readOne () {
    local oldstty
    oldstty=$(stty -g)
    stty -icanon -echo min 1 time 0
    dd bs=1 count=1 2>/dev/null
    stty "$oldstty"
}

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
char=$(readOne)    # get the character
echo $char         # print the character (or you can do something else with it)
票数 3
EN

Stack Overflow用户

发布于 2009-11-29 18:29:39

如果您使用的是Bash:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
read -n1 G

您的系统默认配置为使用dash,而dash不支持此功能,因此您还需要更改脚本的第一行,以指定您希望使用bash:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/bash
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1816298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文