2012-01-22 30 views
98

コマンドラインから "fab"を呼び出すとき、どのようにファブリックタスクにパラメータを渡すことができますか?たとえば:ファブリックタスクへのパラメータの受け渡し

def task(something=''): 
    print "You said %s" % something 
$ fab task "hello" 
You said hello 

Done. 

はそれがfabric.operations.promptにプロンプ​​トを表示せず、これを行うことは可能ですか?

答えて

174

ファブリックは、タスクに引数を渡すために、次の構文を使用します。

fab task:'hello world' 
fab task:something='hello' 
fab task:foo=99,bar=True 
fab task:foo,bar 

あなたはFabric docsでそれについての詳細を読むことができます。

+7

引用符は必要ありません。すべての引数は文字列です: "このプロセスでは文字列の解析が行われるため、すべての値はPython文字列になりますので、それに応じて計画してください(直感的な構文が見つかると、将来のバージョンのFabricでこれを改善したいと考えています)。" –

+2

しかし、「こんにちは世界」の引用符は必要ですね。 – PEZ

+1

@ PEZもしそうなら、この例では端末やファブリックのコマンドラインパーサーがスペースを見て、それがそのタスクのすべての終わりであり、 'world'が新しいタスクだと思うので、おそらく引用符が必要でしょう。 –

0

すべてのPython変数を文字列として渡す必要があります。特に、スクリプトを実行するサブプロセスを使用している場合、エラーが発生します。変数をint/boolean型に別々に戻す必要があります。

def print_this(var): 
    print str(var) 

fab print_this:'hello world' 
fab print_this='hello' 
fab print_this:'99' 
fab print_this='True' 
関連する問題