2

我无法将参数传递给我的 ruby​​ 文件。IE,

OptionParser.new do |opts|
  opts.banner = 'Usage: mp3split.rb [options]'

  opts.on('-f', '--filename fName1,fName2,fName3', Array, 'absolute or relative pathes to file') { |f| options[:filenames] = f }
end.parse!

这种方法需要我编写以下命令:

ruby mp3split.rb --filename fursov_13.mp3,fursov_14.mp3,fursov_14_2.mp3,fursov_15.mp3,fursov_16.mp3,fursov_17.mp3

但我想通过这个得到数组:

ruby mp3split.rb --filename fursov_13.mp3 fursov_14.mp3 fursov_14_2.mp3 fursov_15.mp3 fursov_16.mp3 fursov_17.mp3

我怎样才能实现这个功能?我在文档中找不到任何有用的信息。

4

1 回答 1

1

OptionParser你不能。但是,有一种解决方法,当您需要以这种方式处理的唯一列表并且您不会将其他参数传递给脚本时。在处理输入之前OptionParser用空格分割输入。解析后未键入的参数保持全局常量。假设满足上述所有条件,我们开始:ARGV

OptionParser.new do |opts|
  options[:filenames] = []
  opts.banner = 'Usage: mp3split.rb [options]'        
  opts.on('-f', '--filename fName1 fName2 fName3', Array, 
          'absolute or relative pathes to file') do |f|
    options[:filenames] |= [*f]
  end
end.parse!

options[:filenames] |= ARGV

我显然修复了您的代码中的另一个故障:options[:filenames]应该在每次出现switch、supports时附加而不是覆盖-fOptionParserscript -f f1 -f f2 -f f3

于 2015-04-29T09:00:26.680 回答