我试图在我的ruby应用程序中获得简单的选项处理。看起来像OptionParser
做我想要的大部分,但我无法找到一种方法来优雅地处理意外的论点。为ruby的OptionParser设置默认选项处理程序
如果提供了任何意外的参数,我想将它视为如果-h
参数已通过(显示使用情况并退出)。虽然我没有看到任何处理方法。
如果OptionParser
不能这样做,是否有另一个库可以用来轻松解析命令行参数?
我试图在我的ruby应用程序中获得简单的选项处理。看起来像OptionParser
做我想要的大部分,但我无法找到一种方法来优雅地处理意外的论点。为ruby的OptionParser设置默认选项处理程序
如果提供了任何意外的参数,我想将它视为如果-h
参数已通过(显示使用情况并退出)。虽然我没有看到任何处理方法。
如果OptionParser
不能这样做,是否有另一个库可以用来轻松解析命令行参数?
有可能是一个光滑的方式来做到这一点,但我不知道它。我已经做到了这一点:
opts = OptionParser.new
...
opts.on_tail("-h", "--help",
"Show this message") do
puts opts
exit
end
begin
opts.parse!(argv)
rescue OptionParser::InvalidOption => e
puts e
puts opts
exit(1)
end
,如果你低于保存为test.rb
#/usr/bin/env ruby
require 'optparse'
test = nil
help = nil
ARGV.options {|opt|
opt.on("--test=test") {|val| test=val}
help = opt.help
begin
opt.parse!
rescue OptionParser::InvalidOption => e
puts help
end
}
,并在终端下面执行,
$./test.rb --foo
你下面。
Usage: test [options]
--test=test
这就是我最终做的。它适用于我处理的情况,但我更愿意为任何未明确定义的选项设置通配符回调。 – Herms 2010-01-31 04:32:33
我很好奇,为什么这不适用于任何未明确定义的选项。不会OptionParser总是引发InvalidOption错误? – liquidki 2014-03-02 21:19:33
@liquidki - 我认为_will_会工作,因为OptionParser会为未定义的选项引发一个InvalidOption错误。 – 2014-03-03 04:38:37