Принятый способ указать список значений для данной опции — это повторение этой опции (например, опция -D
принята java
и компиляторы C), например
my_script.rb --test=arg1 --test=arg2
В некоторых случаях природа ваших аргументов может быть такова, что вы можете позволить себе использовать разделитель, не создавая двусмысленности (например, параметр -classpath
для java
или, точнее, параметр -o
для 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
person
vladr
schedule
05.11.2012