OS X Bash脚本:语法错误:意外的文件结束

时间:2016-03-29 07:22:25

标签: bash

我尝试学习如何编写一个bash脚本来拥有自己的脚本来启动和停止Tomcat服务器,而我似乎无法找到导致此脚本出错的原因。我仔细检查了我的iffi语句,以确保它们匹配,但仍然不知道出了什么问题。

编辑: 这是确切的错误消息

line 87: syntax error: unexpected end of file

这是脚本:

#!/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

1 个答案:

答案 0 :(得分:1)

请参阅man bash,换句话说bash(1),部分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.

最后一句话指的是你的问题。