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

时间:2011-09-13 09:29:38

标签: 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 `<main>'

这方面的任何指示都会非常感激 谢谢 沙

1 个答案:

答案 0 :(得分:11)

如果没有命令行参数,

gets将只读取真实的$stdin(即用户)。否则,它会将这些参数作为文件连接为虚拟$stdin

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

您也可以随时删除ARGV中的参数(或一次删除所有参数),gets应该可以正常使用。