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

Sir*_*sen 38 ruby

我对Ruby很新,今天我写了一个应用程序,你可以通过ARGV传递参数.但在我的应用程序中,我希望能够使用"获取".问题是,每次我尝试这样做,我都会收到错误.

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

print "Say something! "
input = gets
Run Code Online (Sandbox Code Playgroud)

如果我这样称呼:

$ ruby script.rb this is arguments
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

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

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

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

Chu*_*uck 80

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

print "Say something! "
input = $stdin.gets
Run Code Online (Sandbox Code Playgroud)

  • 堆栈溢出; 让我每天都能做得更好. (5认同)

Li0*_*liQ 9

你应该用STDIN.getsKernel#gets.

一些参考.