ruby中的相同程序如何接受来自用户的输入以及命令行参数

我的ruby脚本从命令行参数获取某些输入。 它检查是否缺少任何命令行参数,然后它会提示用户输入。 但我无法使用获取来自用户的输入。

示例代码:test.rb

name="" ARGV.each do|a| if a.include?('-n') name=a puts "Argument: #{a}" end end if name=="" puts "enter name:" name=gets puts name end 

运行脚本: ruby test.rb raghav-k

导致错误:

 test.rb:6:in `gets': No such file or directory - raghav-k (Errno::ENOENT) from test.rb:6:in `gets' from test.rb:6:in `' 

任何指向这个方向的人都会非常感激谢谢桑迪

如果没有命令行参数, gets将只读取真正的$stdin (即用户)。 否则,它会将这些参数作为文件连接为虚拟$stdin

您可以使用STDIN.gets确保始终使用正确的function。

您也可以随时删除ARGV的参数(或一次性删除它们),您的gets应该正常工作。