Ошибка разбора условия в случае функции zsh возле `) ' - PullRequest
0 голосов
/ 30 октября 2019

Я слежу за этим блогом, чтобы настроить функцию 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 Ответ

1 голос
/ 30 октября 2019

Посмотрите справочную страницу zsh (man zshmisc):

регистр в списке [[(] pattern [| pattern] ...) (;; |; & |; |)] ... esac

Как видите, вы должны разделить несколько шаблонов на |:

case $1 in
  |clear)
    ....
...