将命令行参数传递给 Ruby 脚本并从命令行读取时出现问题
我已将问题范围缩小到以下简单的代码片段:
#!/usr/bin/env ruby
print "Enter your name: "
name = gets.chomp
puts "Hello #{name}"
当从 OS X 终端调用时,效果很好,如 ruby a.rb
。但是,传递像 ruby a.rb 123
这样的命令行参数会导致此错误:
a.rb:4:in `gets': No such file or directory - 123 (Errno::ENOENT)
from a.rb:4
我的目标是将命令行参数传递给脚本并从键盘读取输入。
什么原因导致上述错误?
I've narrowed the problem down to the following simple code snippet:
#!/usr/bin/env ruby
print "Enter your name: "
name = gets.chomp
puts "Hello #{name}"
This works fine when called from the OS X Terminal like this ruby a.rb
. However passing a command line argument like this ruby a.rb 123
causes this error:
a.rb:4:in `gets': No such file or directory - 123 (Errno::ENOENT)
from a.rb:4
My goal is to pass command line arguments to a script and read input from the keyboard.
What is causing the above error?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在这里找到答案:Ruby 中的同一程序如何接受用户的输入以及命令行参数
在使用
gets
之前必须执行ARGV.clear
。Found the answer here: How can same program in ruby accept input from user as well as command line arguments
Just had to do
ARGV.clear
before usinggets
.