2017-02-06 2 views
4

zsh 함수를 물고기 함수로 변환하는 방법에 대한 훌륭한 대답은 this입니다. 이제 또 다른 질문이 있습니다. 어떻게 다른 함수에서 그 함수를 호출하여 인수를 전달합니까?물고기 셸에서 다른 함수 호출

나는 이것을 시도 :

function ogf 
    echo "Cloning, your editor will open when clone has completed..." 
    source (env TARGET_DIRECTORY=~/students EDITOR=$EDITOR clone_git_file -ts $argv[1] | psub) 
end 

function wogf 
    env EDITOR=webstorm ogf "$argv[1]" 
end 

하지만 난 얻을 "ENV를 : OGF : 해당 파일 또는 디렉토리".

목표는이 실행에 대해 EDITOR 환경 변수 만 변경 한 다음 ogf을 호출하는 것입니다.

답변

3

env 명령은 다른 외부 명령 만 실행할 수 있습니다. 쉘 내장 함수 나 함수를 호출 할 수 없습니다. 껍데기가 물고기, 배시 또는 다른 어떤 것이 든 관계없이. 해결 방법은 --no-scope-shadowing 플래그로 호출되는 함수를 정의하고 호출 함수에서 을 사용하는 것입니다.

function ogf --no-scope-shadowing 
    echo "Cloning, your editor will open when clone has completed..." 
    source (env TARGET_DIRECTORY=~/students EDITOR=$EDITOR clone_git_file -ts $argv[1] | psub) 
end 

function wogf 
    set -l EDITOR webstorm 
    ogf $argv 
end