1

因此,如果我使用 curl 下载并运行以下代码,gets 会产生 nil 并且不会提示任何内容。

str=gets
unless str.nil?
  puts str
else
  puts "gets produced nil"
end

正在使用的命令(您可以自己尝试)

curl https://raw.github.com/gist/3077534/06ea1c27f7bed38408d2662671f29ea758e2e54b/gets_test.rb | ruby

这样做有更好/更常见的做法吗?

4

1 回答 1

2

这可能对您有用:

tty = STDIN.reopen('/dev/tty')

tty.each_line do |line|
  break if line == "\n"
  puts line
end

tty.close

它对我有用:

$ curl https://raw.github.com/gist/3078191 | ruby
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   106  100   106    0     0     84      0  0:00:01  0:00:01 --:--:--   153
foo
foo
foobar
foobar
now pressing enter ...
now pressing enter ...
 
于 2012-07-09T17:09:04.910 回答