在Ruby中每个参数选项有多个输入的斜线解析命令行参数

问题描述

我正在使用红宝石中的Slop来解析输入参数:

slop_opts = Slop.parse(ARGV.map(&:strip)) do |o|                                
  o.string '--test1','explain test1'                             
  o.string '--test2','explain test2'                                      
  o.on '--help' do                                                              
    puts o                                                                      
    exit                                                                        
  end                                                                           
end                                                                             
                                                                                
slop_opts.to_hash      

我需要test2包括几个选项: 例如

ruby this_script.rb --test1 one_arg --test2 first_arg second_arg

我的一个约束是我需要first_arg和second_arg作为2个不同的输入,所以我不能仅仅从,(或类似的)上分割first_arg,second_arg这样的输入字符串来获取它们。

谢谢您的帮助!

解决方法

--test2设为Array argument。将定界符设置为nil以禁用拆分输入。

slop_opts = Slop.parse(ARGV.map(&:strip)) do |o|                                
  o.string '--test1','explain test1'                             
  o.array '--test2','explain test2',delimiter: nil                                  
  o.on '--help' do                                                              
    puts o                                                                      
    exit                                                                        
  end                                                                           
end  

然后每个输入都有自己的--test2

ruby this_script.rb --test1 one_arg --test2 first_arg --test2 second_arg