2017-02-21 33 views
1

我需要讓我的魚的功能接受argv的選項。 喜歡的東西,如何在魚殼功能中使用argv選項?

myProg <command> <options> 

目前,我有以下功能

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

我需要從我的終端發送下​​面的命令

myProg vm start 

可以請你如何重寫幫助函數來接受選項?

謝謝..

回答

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

faho是正確的,艾瑪。我懷疑你正在考慮在POSIX兼容shell中的''$ @「'構造的行爲。 Fish不支持這一點,因爲它不需要考慮它具有更爲可變的插值語義。 –