2013-04-04 67 views
2

我正在嘗試使用OptionParser來讀取多個選項,並讓它們都作用於一個文件名。 Ex: myprogram.rb -a -b file.txt如何讓2個選項共享一個強制性參數,同時允許像-h這樣的東西在沒有參數的情況下運行?目前上面的行只是讓-a-b爲參數。Ruby OptionParser:2個選項,1個參數

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命令應該可以工作。理想情況下,此解決方案應與任何選項配合使用。

+0

Docs參考http://ruby-doc.org/stdlib-1.9.3/libdoc/optparse/rdoc/OptionParser.html – AnthonyW 2013-04-04 15:57:17

回答

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 

此代碼假定採取的選項後,留下的命令行上的唯一的事情應該是文件名。我覺得有一種更優雅的方式來考慮其他可能會混淆命令行並允許對它們進行糾錯的方法。

相關問題