7

我试图在我的 ruby​​ 应用程序中进行简单的选项处理。看起来像OptionParser我想要的大部分,虽然我想不出一种优雅地处理意外争论的方法。

如果提供了任何意外的参数,我想将其视为-h已传递参数(显示用法并退出)。我没有看到任何方法来处理它。

如果OptionParser做不到,是否有另一个库可以用来轻松解析命令行参数?

4

2 回答 2

10

可能有一种巧妙的方法可以做到这一点,但我不知道。我已经这样做了:

  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
于 2010-01-30T04:26:34.293 回答
0

如果你在下面另存为 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
于 2013-07-24T09:50:41.187 回答