我正在尝试在我的 Ruby 应用程序中实现简单的选项处理。 看起来 OptionParser
基本满足我的需求,但我无法找到一种优雅地处理意外参数的方法。
如果提供了任何意外的参数,我希望将其视为传递了 -h
参数(显示用法并退出)。 但是,我没有看到任何处理这种情况的方法。
如果 OptionParser
无法胜任,是否有其他库可用于轻松解析命令行参数?
我正在尝试在我的 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
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