【发布时间】:2016-01-20 16:10:53
【问题描述】:
我尝试使用基本 bash 命令read 从键盘捕获单个字符。但是我尝试了几种方法似乎很难得到输出。
示例代码:
fmt.Println(exec.Command("read", "-t", "5", "-n", "1").Output())
其含义是“等待 5 秒从键盘获取 1 个输入字符”。从上面的代码中,我希望看到我的输入字符连同它的错误一起打印出来,但我得到的是
输出:
[] exit status 1
此输出仅在不到 1 秒的时间内立即打印,这与代表等待 5 秒的 read 命令的 "-t", "5" 参数冲突。我尝试在 1 秒内输入一些字符,但似乎根本不起作用。
顺便说一句,如果试试这个
fmt.Println(exec.Command("echo", "\"Hi!\"").Output())
输出:
[34 104 105 34 10] <nil>
这里似乎可以使用简单的echo。
【问题讨论】:
-
Read 是一个 bash 命令,而不是像 echo 一样的 PATH 中的可执行文件。也许在 bash 中调用 read 可能会起作用。我建议找到一个仅限 Go 的解决方案。
-
@Volker 我只想捕获
spacebar仅此而已。您对简单的仅限解决方案有什么建议吗?