我的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>'
这方面的任何指示都会非常感激 谢谢 沙
答案 0 :(得分:11)
gets
将只读取真实的$stdin
(即用户)。否则,它会将这些参数作为文件连接为虚拟$stdin
。
您可以使用STDIN.gets
确保始终使用正确的功能。
您也可以随时删除ARGV
中的参数(或一次删除所有参数),gets
应该可以正常使用。