在下面的脚本中,短选项按预期工作,长选项不是:
#!/usr/bin/env ruby
require 'optparse'
optparse = OptionParser.new do|opts|
opts.on( '-h', '--help', 'Display standard help') do puts opts end
opts.on( '-H', '--Help', 'Display other help' ) do puts 'Help!' end
end
optparse.parse!
以下是运行时的结果:
$ ./test -h
Usage: t [options]
-h, --help Display standard help
-H, --Help Display other help
$ ./test -H
Help!
$ ./test --help
Help!
$ ./test --Help
Help!
有没有办法让--help
生成与-h
相同的输出?
答案 0 :(得分:2)
是的,似乎长选项不区分大小写。按照惯例,这是我想象的。从未见过具有区分大小写的长名称的工具。
参见来源:https://github.com/ruby/ruby/blob/b4974e71dcb32d430d7d686c5de247218991ec6c/lib/optparse.rb#L1408
您可以复制和修改OptionParser
的来源,但您可能不应该这样做。 :)
答案 1 :(得分:1)
从:
开始require 'optparse'
options = {}
OptionParser.new do|opts|
opts.on( '-f', '--foo', 'Display standard help') { |o| options[:foo] = o }
opts.on( '-F', '--FOO', 'Display other help' ) { |o| options[:FOO] = o }
end.parse!
puts options
这些示例可能有助于理解:
OptionParser已定义-h
和--help
:
$ ruby test.rb -h
Usage: test [options]
-f, --foo Display standard help
-F, --Foo Display other help
$ ruby test.rb --help
Usage: test [options]
-f, --foo Display standard help
-F, --Foo Display other help
-H
尚未定义,因此您可以将其用作区分大小写选项,以获得扩展或辅助帮助:
$ ruby test.rb -H
test.rb:7:in `<main>': invalid option: -H (OptionParser::InvalidOption)
单个字母,&#34;短旗&#34;区分大小写,正如我们在-H
看到的那样:
$ ruby test.rb -f
{:foo=>true}
$ ruby test.rb -F
{:FOO=>true}
长标志不区分大小写:
$ ruby test.rb --foo
{:FOO=>true}
$ ruby test.rb --FOO
{:FOO=>true}