因此,如果我使用curl下载并运行以下代码,则生成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
这样做有更好/更常见的做法吗?
答案 0 :(得分: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 ...