Ich habe versucht zu lernen, wie man ein Bash-Skript schreibt, um ein eigenes Skript zum Starten und Stoppen eines Tomcat-Servers zu bekommen, und ich kann nicht finden, was den Fehler verursacht in diesem Skript. Ich habe meine if
und fi
Aussagen überprüft, um sicherzustellen, dass sie übereinstimmen, aber immer noch keine Ahnung haben, was falsch ist.OS X Bash Script: Syntaxfehler: unerwartetes Ende der Datei
EDIT: Hier ist die genaue Fehlermeldung
line 87: syntax error: unexpected end of file
Hier ist das Skript:
#!/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
Sie brauchen ein Leerzeichen zwischen den '}' und '#' für die Kommentare. – 123
Sie haben die relevante Antwort (als Kommentar). Beobachtung: "Bitte verwenden Sie die richtigen Optionen" ist sehr wenig hilfreich, wenn Sie den Befehl 6 Monate später verwenden und sich nicht mehr erinnern können, welche Optionen korrekt sind. Sie sollten eine Zusammenfassung der korrekten Verwendung melden, um den Speicher des Benutzers zu durchsuchen. Beispiel: echo Verwendung: $ 0 {restart | start | shutdown | status} "> & 2; exit 1 'meldet die Verwendung eines Standardfehlers und stellt sicher, dass das Skript einen Fehlerstatus meldet ("exit 0" zeigt Erfolg an). –
Skripte zum Starten und Stoppen von Diensten sind nicht wirklich eine gute Übung für Anfänger und sinnlos, wenn Sie kein Anfänger sind. – tripleee