首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何处理Ruby OptionParser中缺少的强制参数?

如何处理Ruby OptionParser中缺少的强制参数?
EN

Stack Overflow用户
提问于 2010-03-31 01:23:45
回答 4查看 7.6K关注 0票数 16

在OptionParser中,我可以强制设置一个选项,但是如果我省略了这个值,它将接受后面任何选项的名称作为值,这会搞乱命令行解析的其余部分。下面是一个测试用例,它反映了选项的值:

代码语言:javascript
复制
$ ./test_case.rb --input foo --output bar
output  bar
input  foo

现在省略第一个选项的值:

代码语言:javascript
复制
$ ./test_case.rb --input  --output bar
input  --output

有什么方法可以防止它接受另一个选项名作为值吗?谢谢!

测试用例代码如下:

代码语言:javascript
复制
#!/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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2547201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档