为ruby的OptionParser设置默认选项处理程序

时间:2010-01-30 04:18:03

标签: ruby command-line-arguments

我正在尝试在我的ruby应用中获得简单的选项处理。看起来OptionParser完成了我想要的大部分工作,但我无法找到一种方法来优雅地处理意外的参数。

如果提供了任何意外的参数,我想将其视为传递-h参数(显示用法和退出)。我没有看到任何办法解决这个问题。

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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