我正在尝试在我的ruby应用中获得简单的选项处理。看起来OptionParser
完成了我想要的大部分工作,但我无法找到一种方法来优雅地处理意外的参数。
如果提供了任何意外的参数,我想将其视为传递-h
参数(显示用法和退出)。我没有看到任何办法解决这个问题。
如果OptionParser
无法做到,是否有另一个库可用于轻松解析命令行参数?
答案 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