Bash Case / Переключение Форматирования - PullRequest
0 голосов
/ 29 октября 2019

Я пытаюсь написать оператор case / switch в моем bash-скрипте следующим образом:

case "$REPLY" in
        E*|e*) $EDITOR "$COMMIT_MSG_FILE" < $TTY; continue ;;
        Y*|y*) exit 0 ;;
        N*|n*) exit 1 ;;
        *)     SKIP_DISPLAY_WARNINGS=1; create_prompt; continue ;;
esac

Однако я продолжаю получать

syntax error near unexpected token ';;'
          E*|e*) $EDITOR "$COMMIT_MSG_FILE" < $TTY; continue ;;'

Из прочтения я знаючто ;; является эквивалентом оператора break в традиционном операторе switch, но я не уверен, почему здесь появляется синтаксическая ошибка. Все функции и переменные определены выше, поэтому я не вижу в этом проблемы. Любой совет?

РЕДАКТИРОВАТЬ: полнота цикла:

while true; do

    read_commit_message

    check_commit_valid

    # if there are no warnings, then the commit is good and we can exit!
    test ${#WARNINGS[@]} -eq 0 && exit 0;

    # if we're still here, there are warnings we need to display
    show_warnings

    # if non-interactive don't prompt and exit with an error
    # need interactivity for the prompt to show and get response
    if [ ! -t 1 ] && [ -z ${FAKE_TTY+x} ]; then
        exit 1
    fi

    # show message asking for proceed, etc
    echo -en "${BLUE}Proceed with commit? [e/y/n/?] ${NO_COLOR}"

    # read the response 
    read REPLY < "$TTY"

  # Check if the reply is valid
    case "$REPLY" in
        E*|e*) $EDITOR "$COMMIT_MSG_FILE" < $TTY; continue ;;
        Y*|y*) exit 0 ;;
        N*|n*) exit 1 ;;
        *)     SKIP_DISPLAY_WARNINGS=1; create_prompt; continue ;;
    esac

done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...