我使用下面的代码将用户字符给定的赋值给变量G:
read G
但是,为了继续执行我的脚本,我需要按enter按钮。有没有可能以某种方式设置读命令,使其在收到来自标准输入的一个字母后立即显示进程前进到下一行?
发布于 2009-11-29 20:05:50
我认为dd
可能可以做到这一点,所以我尝试了一下,但什么也没做。然而,谷歌为我找到了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)
发布于 2009-11-29 18:29:39
如果您使用的是Bash:
read -n1 G
您的系统默认配置为使用dash,而dash不支持此功能,因此您还需要更改脚本的第一行,以指定您希望使用bash:
#!/bin/bash
https://stackoverflow.com/questions/1816298
复制相似问题