Ruby OptionParser:2个选项,1个参数

时间:2013-04-04 13:49:19

标签: ruby parameters optionparser

我正在尝试使用OptionParser读入多个选项,并让它们全部作用于单个文件名。 Ex: myprogram.rb -a -b file.txt如何让2个选项共享一个强制参数,同时允许-h之类的东西在没有参数的情况下运行?目前,上述行仅使-a-b为参数。

optionparser.on("-a FILENAME", "Do this") do |a|
  puts a
end
optionparser.on("-b FILENAME", "Do that") do |b|
  puts b
end

修改

它在做什么:

myprogram.rb -a -b file.txt
=> -b

我需要做什么:

myprogram.rb -a -b file.txt
=> file.txt
=> file.txt

注意:

这些命令应该能够独立运行,并且可以与ls -a ..ls -l ..ls -a -l ..同时运行。但是,如果没有给出文件名,则NEITHER命令应该有效。理想情况下,此解决方案应适用于任何 n 数量的选项。

1 个答案:

答案 0 :(得分:0)

我现在拥有的是:

alpha=false
beta=false
optionparser.on("-a", "Do this") do |a|
  alpha = a
end
optionparser.on("-b", "Do that") do |b|
  beta = b
end
if alpha
  #do something with ARGV[0]
end
if beta
  #do something with ARGV[0]
end

此代码假定在执行选项后,命令行上剩下的唯一内容应该是文件名。我觉得有一种更优雅的方法可以解决其他可能使命令行混乱的问题,并允许对它们进行纠错。