内核#尝试读取文件而不是标准输入

时间:2009-12-10 20:50:52

标签: ruby

我对Ruby很陌生,今天我编写了一个可以通过ARGV传递参数的应用程序。但在我的应用程序中,我希望能够使用“获取”。问题是,每当我尝试这样做时,我都会收到错误。

这是一个显示我的问题的简单脚本:

print "Say something! "
input = gets

如果我这样称呼:

$ ruby script.rb this is arguments

我收到此错误:

script.rb:2:in `gets': No such file or directory - this (Errno::ENOENT)
from script.rb:2

希望有人能够帮助我解决这个问题,所以我可以继续我的Ruby之旅。 :)

编辑:我知道“获取”不会检索传递给文件的参数。 “获取”将查询用户输入。我希望能够在我的应用程序中使用这两种方法。

2 个答案:

答案 0 :(得分:80)

如果存在参数,则默认的gets方法会尝试将第一个视为文件并从中读取。要在这种情况下从$stdin读取,您必须明确使用它:

print "Say something! "
input = $stdin.gets

答案 1 :(得分:9)

您应该使用STDIN.gets而不是Kernel#gets

Some reference