Chris Tei
Chris Tei

Reputation: 316

OS X Bash Script: syntax error: unexpected end of file

I tried learning how to write a bash script to have my own script to start and stop a Tomcat Server, and I can't seem to find what is causing the error in this script. I've double checked my if and fi statements to make sure they match, but still have no idea what is wrong.

EDIT: Here is the exact error message

line 87: syntax error: unexpected end of file

Here is the script:

#!/bin/bash

#Returns the process id of the Tomcat server if currently running
function tomcat_pid {
        local pid=0
        local temp=$(ps x | grep "$CATALINA_HOME" | grep -v grep | cut -d ' ' -f 1)

        if [ -n "$temp" ]; then
                pid=$temp
        fi
        echo "$pid"
}#tomcat_pid

#Checks the status of the Tomcat Server
function tomcat_status {
        local retval="Tomcat Server is not currently running"

        local pid
        pid=$(tomcat_pid)

        if [ "$pid" -gt 0 ]; then
                retval="Tomcat Server is running at pid: $pid"
        fi

        echo "$retval"
}#tomcat_status

#Starts the Tomcat Server
function tomcat_start {
        local pid
        pid=$(tomcat_pid)

        if [ "$pid" -gt 0 ]; then
                echo "Tomcat Server already running at pid: $pid"
        else
                echo "Starting Tomcat Server"
                "$CATALINA_HOME/bin/startup.sh"
        fi
}#tomcat_start

#Stops the Tomcat Server
function tomcat_stop {
        local pid
        pid=$(tomcat_pid)

        if [ "$pid" -gt 0 ]; then
                echo "Shutting down Tomcat Server"
                "$CATALINA_HOME/bin/shutdown.sh"
        else
                echo "Tomcat Server is not currently running"
        fi
}#tomcat_stop

#Restarts the Tomcat Server
function tomcat_restart {
        local pid
        pid=$(tomcat_pid)
        if [ "$pid" -gt 0 ]; then
                echo "Restarting the Tomcat Server"
               "$CATALINA_HOME/bin/shutdown.sh"
                sleep 5s
                "$CATALINA_HOME/bin/start.sh"
        else
                echo "Starting the Tomcat Server"
                "$CATALINA_HOME/bin/startup.sh"
        fi
}#tomcat_restart

if [ -n "$1" ]; then
        if [ "$1" = 'restart'  ]; then
                tomcat_restart
        #tomcat start - Starts the Tomcat Server
        elif [ "$1" = 'start' ]; then
                tomcat_start
        #tomcat shutdown - Shuts down the Tomcat Server
        elif [ "$1" = 'shutdown' ]; then
                tomcat_stop
        #tomcat status - Checks the status of the tomcat server
        elif [ "$1" = 'status' ]; then
                tomcat_status
        else
                echo "Please use correct options"
        fi
else
        echo "Please use correct options"
fi

Upvotes: 2

Views: 2288

Answers (1)

ikrabbe
ikrabbe

Reputation: 1929

See man bash, in other words bash(1), Section SHELL GAMMAR

   { list; }
          list  is  simply executed in the current shell environment.  list must be terminated with a newline or semi‐
          colon.  This is known as a group command.  The return status is the exit status of list.  Note  that  unlike
          the  metacharacters ( and ), { and } are reserved words and must occur where a reserved word is permitted to
          be recognized.  Since they do not cause a word break, they must be separated  from  list  by  whitespace  or
          another shell metacharacter.

The last sentence points at your problem.

Upvotes: 1

Related Questions