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

我对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之旅。 🙂

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

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

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

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

一些参考 。