小编Fuo*_*oco的帖子

shell函数定义有和没有关键字

我花了很长时间才发现以下shell脚本不起作用的原因:

if command -v z > /dev/null 2>&1; then
    unalias z 2> /dev/null

    z() {
        [ $# -gt 0 ] && _z "$*" && return
            cd "$(_z -l 2>&1 |
                fzf --height 40% --nth 2.. --reverse --inline-info +s --tac \
                --query "${*##-* }" |
                sed 's/^[0-9,.]* *//')"
    }
fi
Run Code Online (Sandbox Code Playgroud)

是函数定义,在这种情况下,需要函数关键字,function z() {...}.没有它,我得到:

~/.shell/functions:112: defining function based on alias `z'
~/.shell/functions:112: parse error near `()'
Run Code Online (Sandbox Code Playgroud)

我找不到任何说明function在函数定义中使用或不使用关键字之间的任何区别.在这种情况下,为什么这是解决方案?(我试过zsh和bash)

bash shell zsh

2
推荐指数
1
解决办法
389
查看次数

标签 统计

bash ×1

shell ×1

zsh ×1