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