OptionParser的「完整示例」部分下的示例詳細介紹瞭如何接受項目列表。
這是一個基於該示例的示例程序。 opts.on
中的第三個參數Array
指示應使用輸入src, dst
來創建數組。要運行此示例,您需要執行gem install trollop
。
# test.rb
require 'optparse'
options = {}
OptionParser.new do |opt|
opt.on("-m src, dst", "--move src, dst", Array, "Move from src to dst") do |list|
options[:src] = list[0]
options[:dst] = list[1]
end
end.parse!
puts options # It's a hash of parsed options
採樣運行:
> ruby test.rb -m from,to
{:src=>"src", :dst=>"dst"}
>ruby test.rb -h
Usage: test [options]
-m, --move src, dst Move from src to dst
上述腳本迫使人們使用逗號分隔選項。
正如「Really Cheap Command-Line Option Parsing in Ruby」所指出的,似乎是一個寶石,trollop,即可以相當容易使用命令行解析。
基於Trollop樣本程序在下面給出,其允許的空間使用情況具有多個值
指定選項
# test.rb
require "trollop"
opts = Trollop::options do
banner "Command line parsing using Trollop"
opt :move, "--move src dst', Move from src to dst", :short => "-m", :long => "--move", :type => :strings
end
# An array of option values
p opts.move
樣品運行:
>ruby test.rb -m hello world
["hello", "world"]
>ruby test.rb -h
Command line parsing using Trollop
-m, --move=<s+> '--move src dst', Move from src to dst
-h, --help Show this message
有幫助之間的微妙的差別兩種方法之間的輸出。 Trollop生成幫助文本,其中--move=<s+>
未明確指出它需要接受兩個值,因此我必須重複命令語法描述。
在標題爲「生成幫助」下的文檔http://ruby-doc.org/stdlib-2.2.4/libdoc/optparse/rdoc/OptionParser.html中有一個非常好的示例,該示例顯示如何接受調用的參數'name'。同樣可以擴展你的'src'和'dst'的情況。您需要重複顯示'name'的示例 - 一次輸入'src',一次輸入'dst'作爲兩個單獨的'opts.on'語句 –
OP特別要求如何接受同一個選項的兩個連續值。 –