为ruby';s选项分析器

为ruby';s选项分析器,ruby,command-line-arguments,Ruby,Command Line Arguments,我正在尝试在我的ruby应用程序中实现简单的选项处理。看起来,OptionParser完成了我想要的大部分工作,尽管我无法找到一种优雅地处理意外参数的方法 如果提供了任何意外参数,我希望将其视为传递了-h参数(显示用法并退出)。不过,我看不出有什么办法可以解决这个问题 如果OptionParser做不到这一点,我是否可以使用另一个库来轻松解析命令行参数?可能有一种巧妙的方法,但我不知道。我已经做到了: opts = OptionParser.new ... opts.on_tail(

我正在尝试在我的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
需要“optpass”
测试=零
帮助=零
ARGV.options{| opt|
opt.on(“--test=test”){val | test=val}
help=opt.help
开始
opt.parse!
rescue OptionParser::InvalidOption=>e
帮助
结束
}
并在终端中执行以下操作

$./test.rb --foo
你到下面去

Usage: test [options]
    --test=test

这就是我最后做的。它适用于我正在处理的情况,但我更希望能够为任何未明确定义的选项设置通配符回调。我很好奇为什么这对任何未明确定义的选项都不起作用。OptionParser不会总是引发InvalidOption错误吗?@liquidki-我认为它会起作用,因为OptionParser会为未定义的选项引发InvalidOption错误。