2013-08-28 11 views
5

私は、コマンドライン引数を解析するために娼婦を使用している、と私はfilename1、以下filename2のようないくつかの必要な位置引数を追加したい:trollopで正の引数をどうやって作るのですか?

usage: my_script [--help] [--some-option VALUE] [--some-flag] filename1 filename2 

私は娼婦でこれを行うにはどうすればよいですか?

+0

は娼婦との位置引数を使用する方法をお知りましたか? – dusan

+0

@dusanいいえ、運がいいです。 – Dean

答えて

3

Trollopは、解析オプションに関するもので、存在する場合もありません。

必須の位置引数はオプションではありません。あなたの定位置の引数にアクセスするには、argvを見てください。オプションと必要な定位置引数を組み合わせて使用​​する場合、trollopはオプションのものを取り除き、気になるものだけが入っている状態にARGVを残します。

あなたは、このサンプルコードを実行する場合:ここで

#!/usr/bin/env ruby 

require 'trollop' 

opts = Trollop::options do 
    opt :monkey, "Use monkey mode"     # flag --monkey, default false 
    opt :name, "Monkey name", :type => :string  # string --name <s>, default nil 
    opt :num_limbs, "Number of limbs", :default => 4 # integer --num-limbs <i>, default to 4 
end 

puts "opts: #{opts}" 
puts "ARGV: #{ARGV}" 

は、あなたが得るものです:

[~/tbear/bin]$ ./t.rb 
opts: {:monkey=>false, :name=>nil, :num_limbs=>4, :help=>false} 
ARGV: [] 

[~/tbear/bin]$ ./t.rb arg1 
opts: {:monkey=>false, :name=>nil, :num_limbs=>4, :help=>false} 
ARGV: ["arg1"] 

[~/tbear/bin]$ ./t.rb -m arg1 
opts: {:monkey=>true, :name=>nil, :num_limbs=>4, :help=>false, :monkey_given=>true} 
ARGV: ["arg1"] 

はARGVは、例2と同じ方法をお知らせして実施例3

4

娼妓leftoversという属性もあります。その値はprovides the same informationです。ここでは、あなたがそれを使用したい方法は次のとおりです。

#!/usr/bin/env ruby 

require 'trollop' 
require 'pp' 

p = Trollop::Parser.new do 
    opt :monkey, 'Use monkey mode'     # flag --monkey, default false 
    opt :name, 'Monkey name', :type => :string  # string --name <s>, default nil 
    opt :num_limbs, 'Number of limbs', :default => 4 # integer --num-limbs <i>, default to 4 
end 

p.parse 

puts 'Leftovers:' 
pp p.leftovers 
puts 'ARGV:' 
pp ARGV 

ここでの結果です:

> ruby se_01.rb foo blarb -m 
Leftovers: 
["foo", "blarb"] 
ARGV: 
["foo", "blarb"] 
関連する問題