【发布时间】:2011-02-02 13:58:53
【问题描述】:
在 OptionParser 中,我可以强制设置一个选项,但如果我省略了该值,它将采用任何后续选项的名称作为值,从而搞砸了命令行解析的其余部分。 这是一个与选项值相呼应的测试用例:
$ ./test_case.rb --input foo --output bar
output bar
input foo
现在省略第一个选项的值:
$ ./test_case.rb --input --output bar
input --output
有什么方法可以防止它使用另一个选项名称作为值吗? 谢谢!
这里是测试用例代码:
#!/usr/bin/env ruby
require 'optparse'
files = Hash.new
option_parser = OptionParser.new do |opts|
opts.on('-i', '--input FILENAME', 'Input filename - required') do |filename|
files[:input] = filename
end
opts.on('-o', '--output FILENAME', 'Output filename - required') do |filename|
files[:output] = filename
end
end
begin
option_parser.parse!(ARGV)
rescue OptionParser::ParseError
$stderr.print "Error: " + $! + "\n"
exit
end
files.keys.each do |key|
print "#{key} #{files[key]}\n"
end
【问题讨论】:
标签: ruby command-line optionparser