如何在OptionParser之后转移ARGV?

时间:2016-05-02 19:31:55

标签: ruby optionparser

我正在扩展一个类,它使用OptionParser来解析命令行选项。

我希望我的班级能够处理最后一个选项之后剩余的参数。 Ruby中有optind的{​​{1}}可用于C中的getopt(3)吗?

某种方式确定ARGV中有多少选项 - 所以我可以shift跳过选项并仅处理参数

例如,我可以访问opt_parser对象本身。或许,我可以从中弄清楚,我消耗了多少件ARGV

1 个答案:

答案 0 :(得分:1)

我不明白你的问题,你能不能添加一个最小的例子来表明你的问题。

如果我使用选项-v test运行此最小示例:

require 'optparse'

#Anlegen des Parsers
opts = OptionParser.new()
opts.on("-v", "--[no-]verbose", "Run verbosely") { |v|
  puts "->Verbose is #{v.inspect}"
}

opts.parse!

puts "Remaining ARGV: %s" % ARGV.inspect

然后我得到了结果

->Verbose is true
Remaining ARGV: ["test"]

解析选项后,ARGV包含其余参数。