我正在尝试使用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 数量的选项。
答案 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
此代码假定在执行选项后,命令行上剩下的唯一内容应该是文件名。我觉得有一种更优雅的方法可以解决其他可能使命令行混乱的问题,并允许对它们进行纠错。