2017-02-21 3 views
1

私は自分の魚の関数をargvのためのオプションを受け入れる必要があります。 何かのように、現在fish shell関数でargvオプションを使用するには?

myProg <command> <options> 

私持って、次の機能私は

myProg vm start 

あなたが書き換え方法で助けてください、私の端末から次のコマンドを送信する必要が

function myProg 
     java -jar "/Users/username/myProg/myprog-0.2.jar" "$argv" 
end 

オプションを受け入れる機能はありますか? のような魚の変数で

おかげ..

答えて

6

が配列され、コマンドに補間するときに、単一の文字列に値を連結する場合を除き、二重引用符で囲むべきではありません。

function myProg 
    java -jar "/Users/username/myProg/myprog-0.2.jar" $argv 
end 
+0

それは引用符で、魚はそれらを単一の文字列を作成していないことは注目に値しますが、それは実際の引数のそれぞれの周りに引用符を置く、そう、 'MYPROG VM開始:他の言葉ではちょうどこのようなあなたの関数を定義します'は' java -jar "/path/thing.jar" "vm" "start" 'を実行します。 – emma

+0

いいえ、そうではありません。リスト要素の間にスペースを入れて、それらを単一の文字列に変換します。例えば、 'set list foo bar; printf "%s \ n" "$ list" '。 – faho

+0

ファーゴは正しい、エマ。 POSIX互換のシェルで '' @ @ ''構造体の動作を考えていると思います。魚はそれをサポートしていません。なぜなら、それはそれがより穏やかな可変補間セマンティクスを有することを必要としないからです。 –

関連する問題