使用 OptionParser 的长选项名称是否不区分大小写?
Are long option names case insensitive using OptionParser?
在以下脚本中,短选项按预期工作,长选项则不然:
#!/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
相同的输出?
是的,长选项似乎不区分大小写。我想这是约定俗成的。从未见过具有区分大小写的长名称的工具。
查看来源:https://github.com/ruby/ruby/blob/b4974e71dcb32d430d7d686c5de247218991ec6c/lib/optparse.rb#L1408
您可以复制和修改 OptionParser
的源代码,但您可能不应该这样做。 :)
开始于:
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)
单个字母,"short flags" 区分大小写,正如我们在 -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}
在以下脚本中,短选项按预期工作,长选项则不然:
#!/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
相同的输出?
是的,长选项似乎不区分大小写。我想这是约定俗成的。从未见过具有区分大小写的长名称的工具。
查看来源:https://github.com/ruby/ruby/blob/b4974e71dcb32d430d7d686c5de247218991ec6c/lib/optparse.rb#L1408
您可以复制和修改 OptionParser
的源代码,但您可能不应该这样做。 :)
开始于:
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)
单个字母,"short flags" 区分大小写,正如我们在 -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}