如何设置读命令执行而不必在shell中按下Enterbutton?

我使用下面的代码将用户字符给定给variablesG:

read G 

但是为了继续执行我的脚本,我需要按回车键。 是否有可能以某种方式设置读取命令,使其在接收到标准input的一个字母后立即显示进程到下一行?

我以为dd也许可以做到这一点,所以我试了一下,没有得到任何地方。 然而,谷歌为我找到了这个 ,我在这里调整它:

 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) 

如果你使用Bash:

 read -n1 G 

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

 #!/bin/bash