我正在使用Ruby OptionParser,但无法弄清楚如何将非选项参数作为两个列表。将ARGV分成两个文件列表
myscript --option-one --option-two file1 file2 -- file10 file11
有没有办法从OptionParser中分别得到两个文件列表?
[file1, file2]
[file10, file11]
我不在乎他们哪一个仍然在ARGV,只是想分别有两个列表提交他们到不同的处理。
我的当前的解决方案是
加入
--
的处理程序如下opts.on('--', 'marks the beginning of a different list of files') do ARGV.unshift(:separator) end
这产生ARGV具有以下内容
[ file1, file2, :separator, file10, file11 ]
,然后,外选项ionParser和
parse!
被称为后,我修改ARGV
list1 = ARGV.shift(ARGV.index(:separator)) ARGV.shift
有没有完成它的更优雅的方式?
这些文件如何不同,为什么你不能引入一个新的参数来处理最后两个文件。像'--option-two file1 file2 --- option-three file10 file11'。如果你需要一个分隔符,他们听起来像是一个不同的选择。 – Adam 2014-10-20 12:51:50
如何告诉'OptionParser'从ARGV中删除file10和file11?我知道如何做一个单一的文件(' - 选择三FILENAME''),但不知道如何做一个未定义数量的文件 – 2014-10-20 12:56:18