6
我想有PARAMS這樣的:OptionParse在Ruby中,而params不以 ' - '
program dothis --additional --options
和:
program dothat --with_this_option=value
,我不能讓怎麼做。我設法做的唯一事情就是在開始時使用--
的參數。
任何想法?
我想有PARAMS這樣的:OptionParse在Ruby中,而params不以 ' - '
program dothis --additional --options
和:
program dothat --with_this_option=value
,我不能讓怎麼做。我設法做的唯一事情就是在開始時使用--
的參數。
任何想法?
爲了處理使用OptionParser位置參數,首先使用OptionParser解析開關,然後取從ARGV剩餘位置參數:
# optparse-positional-arguments.rb
require 'optparse'
options = {}
OptionParser.new do |opts|
opts.banner = "Usage: #{__FILE__} [command] [options]"
opts.on("-v", "--verbose", "Run verbosely") do |v|
options[:verbose] = true
end
opts.on("--list x,y,z", Array, "Just a list of arguments") do |list|
options[:list] = list
end
end.parse!
上執行的腳本:
$ ruby optparse-positional-arguments.rb foobar --verbose --list 1,2,3,4,5
p options
# => {:verbose=>true, :list=>["1", "2", "3", "4", "5"]}
p ARGV
# => ["foobar"]
的dothis
或dothat
命令可以在任何地方。該options
哈希和ARGV
保持不變不管:
# After options
$ ruby optparse-positional-arguments.rb --verbose --list 1,2,3,4,5 foobar
# In between options
$ ruby optparse-positional-arguments.rb --verbose foobar --list 1,2,3,4,5
這樣,我不能肯定,如果'dothis'或'dothat'是第一個參數,對不對? – 2012-02-02 20:10:59
是的,你是對的。你可以把它想象成'script [command] [options]'。其中命令和選項在位置上可以互換。所以它也可以是'script [options] [command]'。那對你有用嗎? – csherin 2012-02-02 20:25:12
什麼是獲取可能的命令進入使用字符串的好方法?只要將它粘貼到「opts.banner」中? – Paladin 2016-11-29 13:55:08