2017-02-06 4 views
4

Я получил this отличный ответ о том, как преобразовать функцию zsh в функцию рыбы. Теперь у меня есть другой вопрос. Как мне вызвать эту функцию из другой функции, передав аргумент?Вызов другой функции в оболочке рыбы

Я попытался это:

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: ОГФ: Нет такого файла или каталога".

Целью является изменение переменной окружения EDITOR для этого одного выполнения, а затем вызов ogf.

ответ

3

Команда env может выполнять только другие внешние команды. Он не может вызывать встроенные оболочки или функции оболочки; независимо от того, является ли оболочка рыбой, bash или чем-то еще. Решение состоит в том, чтобы определить функцию, вызываемую флагом --no-scope-shadowing, и использовать set -l в вызывающей функции:

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 
Смежные вопросы