shell zsh脚本抛出语法错误:`在`()'`[重复]附近分析错误

q7solyqu  于 2023-08-07  发布在  Shell
关注(0)|答案(1)|浏览(116)

此问题在此处已有答案

unexpected token `(' defining a function to replace an alias in bash(3个答案)
上个月关门了。
我使用的是Mac OS和zsh终端。当我运行我的文件时,我在终端上得到这个错误。

/file/path/.git_alias:10: defining function based on alias `gss'
/file/path/.git_alias:10: parse error near `()'

字符串
有人可以帮助我为什么我得到这个错误吗?
这是我的文件名和文件内容。
文件名:.git_alias
文件内容:

alias gsl='git stash list'

gsa() {
    local num
    num=$1
    shift 1 || return
    git stash apply stash@{"${num}"} "$@";
}

gss() {
    local comment
    comment=$1
    shift 1 || return
    git stash save -u "${comment}" "$@";
}


我试图寻找bash语法,并试图在适当的地方添加和删除",但我仍然得到上面提到的相同错误。

qvtsj1bj

qvtsj1bj1#

问题是您已经有一个名为gss的别名,这就是第一个警告告诉您的。
发生语法错误是因为当它看到以gss开头的行时,它扩展了别名。在此之后,用于保存函数体的大括号不再是有效的语法。
如果找不到定义别名的位置并将其删除,则在此文件中有两个选项:
首先删除别名:

unalias gss
gss() {
    local comment
    comment=$1
    shift 1 || return
    git stash save -u "${comment}" "$@";
}

字符串
或者使用另一种语法来定义函数:

function gss {
    local comment
    comment=$1
    shift 1 || return
    git stash save -u "${comment}" "$@";
}


第三种选择是重命名函数或别名,这样它们就不会冲突。

相关问题