I'm trying to write a case/switch statement in my bash script as follows:
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
However, I keep getting
syntax error near unexpected token ';;'
          E*|e*) $EDITOR "$COMMIT_MSG_FILE" < $TTY; continue ;;'
From reading around, I know that ;; is the equivalent of a break statement in a traditional switch statement, but I'm not sure why I'm getting a syntax error here. All of the functions and variables are defined above, so I can't see that being an issue. Any advice?
EDIT: Entirety of the loop:
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
