zsh函数的大小写条件条件分析错误,位于')'

时间:2019-10-30 02:07:38

标签: zsh oh-my-zsh zshrc

我正在关注此博客以设置zsh函数来切换AWS CLI配置文件 :https://mads-hartmann.com/2017/04/27/multiple-aws-profiles.html

这是博客中的zsh函数:

function aws-switch() {
    case ${1} in
        "")
        clear)
            export AWS_PROFILE=""
            ;;
        *)
            export AWS_PROFILE="${1}"
            ;;
    esac
}

#compdef aws-switch
#description Switch the AWS profile

_aws-switch() {

    local -a aws_profiles

    aws_profiles=$( \
        grep '\[profile' ~/.aws/config \
        | awk '{sub(/]/, "", $2); print $2}' \
        | while read -r profile; do echo -n "$profile "; done \
    )

    _arguments \
        ':Aws profile:($(echo ${aws_profiles}) clear)'
}

_aws-switch "$@"

当我运行源代码〜/ .zshrc时,我将这些行添加到了〜/ .zshrc中 它给出了/.zshrc:4:`)附近的解析错误 我阅读了zsh函数文档,但仍不太擅长理解语法以及如何解决此问题。

1 个答案:

答案 0 :(得分:1)

看看zsh手册页(QWebView):

[[(]模式[|模式] ...)列表(;; |;&|; |)] esac

中的大小写单词

如您所见,您必须用man zshmisc分隔多个模式:

|