首页 > 解决方案 > 在ruby中使用每个参数选项的多个输入来解析命令行参数

问题描述

我在 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.

谢谢您的帮助!

标签: rubyparsingcommand-line-interface

解决方案


--test2一个数组参数。将分隔符设置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

推荐阅读