我目前正在构建一个简单的程序,它将在标准输出上读写文件。我想以这种方式启动我的程序:ruby main.rb -f file1 file2 file3
...
但是使用optParse我不能让它工作我必须包含分隔符..我需要optParse,因为我处理多个选项(如verbose,help ...)。所以,如果我这样做:ruby main.rb -f file1,file2
......它的工作原理
我怎样才能做到这一点?
谢谢!
答案 0 :(得分:1)
如果您没有传递选项参数,或者所有其他参数都是可选的,您只需通过传统方式传递文件:via ARGV
。默认情况下,命令行选项由空格分隔,而不是逗号。
如果您绝对需要支持-f
选项,则可以另外添加对ARGV
的支持
require "optparse"
options = {
:files => []
}
opt_parse = OptionParser.new do |opts|
opts.banner = "Usage: main.rb file(s) ..."
opts.on("-f", "--files file1,file2,...", Array, "File(s)") do |f|
options[:files] += f
end
opts.on_tail("-h", "--help", "Show this message") do
puts opts
exit
end
end
opt_parse.parse!
options[:files] += ARGV
if options[:files].length == 0
abort(opt_parse.help)
end
puts options[:files]
使用此方法,您甚至可以混合使用两种样式:
$ main.rb -f -f file1,file2 file3 -f file4 file5
file1
file2
file4
file3
file5
(注意file5
实际上是通过ARGV
传递的,但有点像你使用空格作为分隔符。)