Ruby OptionParser:2个选项,1个参数
我试图使用OptionParser读取多个选项,并使它们都作用于单个文件名Ruby OptionParser:2个选项,1个参数,ruby,parameters,optionparser,Ruby,Parameters,Optionparser,我试图使用OptionParser读取多个选项,并使它们都作用于单个文件名Ex:myprogram.rb-a-b file.txt如何使两个选项共享一个强制参数,同时也允许像-h这样的东西在没有参数的情况下运行?目前,上面的行只是将-a作为其参数 optionparser.on("-a FILENAME", "Do this") do |a| puts a end optionparser.on("-b FILENAME", "Do that") do |b| puts b end 编
Ex:myprogram.rb-a-b file.txt
如何使两个选项共享一个强制参数,同时也允许像-h
这样的东西在没有参数的情况下运行?目前,上面的行只是将-a
作为其参数
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..
类似,但如果没有给出文件名,则两个命令都不应工作。理想情况下,此解决方案可以与任意n个选项一起使用。我现在拥有的是:
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
这段代码假设在选择这些选项之后,命令行上只剩下文件名。我觉得有一种更优雅的方法可以做到这一点,它考虑到命令行中可能会出现的其他问题,并允许对它们进行错误更正。Docs reference