2017-02-21 2 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 

기능을 사용하여 옵션을 허용합니까?

감사합니다 .. $argv 같은 물고기 변수에

답변

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가 맞습니다. emma. 필자는 POSIX 호환 쉘에서 "$ @"구문의 동작을 생각하고 있다고 생각합니다. Fish는 그것을 지원하지 않습니다. 왜냐하면 그것은 더 보잘것없는 변수 보간 의미론을 가질 필요가 없기 때문입니다. –