Windows 上使用 Git Bash 和 Ruby:在打印提示符之前等待 gets() 输入?

4

我是一个编程/Ruby的新手,无法解决这个古怪的问题...

在Windows上通过Git Bash运行以下Ruby代码:

$ ruby test.rb

puts "Give me input: "
input = gets
puts "You gave me #{input}"

在使用gets()等待输入之前,它不会打印“给我输入:”字符串。相反,它会立即等待输入,然后才打印提示和结果。我尝试过在prompt puts()之后使用$stdout.flush,但输出结果仍然相同。

不过,我在使用其他终端时没有遇到这个问题。


3
在程序开头尝试使用 STDOUT.flushSTDOUT.sync = true,在执行 input = gets 前刷新标准输出缓冲区,以确保程序正常运行。 - user11659763
1个回答

0
正如@user11659763所指出的那样,在Git Bash中设置STDOUT.sync = true可以修复输出,使其在每次调用putsprint后始终被刷新,这是期望的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接