为给定选项指定值列表的公认方法是重复该选项(例如,C 编译器-D
接受的选项),例如java
my_script.rb --test=arg1 --test=arg2
在某些情况下,您的论点的性质可能是您可以负担得起使用分隔符而不会引入歧义(例如-classpath
选项 tojava
或更清楚地是-o
选项 to ps
),因此如果arg1
并且arg2
永远不能通常包含逗号,
,那么您也可以接受例如
my_script.rb --test=arg1,arg2
支持上述两种约定的代码将类似于以下内容:
require 'optparse'
...
test_vals = []
...
opt_parser = OptionParser.new do |opt|
...
opt.on("-t", "--test=arg1[,...]", "Test") do |arg|
test_vals += arg.split(',')
end
...
end
opt_parser.parse!
puts test_vals.join("\n")
然后:
$ my_script.rb --test=arg1 --test=arg2
arg1
arg2
$ my_script.rb --test=arg1,arg2
arg1
arg2
$ my_script.rb --test=arg1 --test=arg2,arg3
arg1
arg2
arg3