start.sh Skript funktioniert nicht | Minecraft | VServer?
Hey Freunde,
Ich habe mir einen VServer gekauft und habe leider eine Fehlermeldung in der Konsole
/start.sh: Zeile 23: Syntaxfehler: Unerwartetes Dateiende.
Hier das start.sh Skript
#!/bin/bash
while true ; do
echo ""
echo " #########################################"
echo " ## Auto Restart Script ##"
echo " ## ##"
echo " ## Press Ctrl + C ONLY when this ##"
echo " ## message shows to stop the loop. ##"
echo " #########################################"
echo "Starting in 5 seconds..."
sleep 1
echo "Starting in 4 seconds..."
sleep 1
echo "Starting in 3 seconds..."
sleep 1
echo "Starting in 2 seconds..."
sleep 1
echo "Starting in 1 seconds..."
sleep 1
java -Xms128M -Xmx2000M -jar spigot.jar --log-strip-color
Weiß jmd woran das liegt?
Server System : Ubuntu 18.04 LTS 64bi
5 Antworten
Hallo
Bitte lerne doch schnellstens Code-TAGs zu verwenden, sieht besser aus und ist leserlich:
#!/bin/bash
while true ; do
echo ""
echo " #########################################"
echo " ## Auto Restart Script ##"
echo " ## ##"
echo " ## Press Ctrl + C ONLY when this ##"
echo " ## message shows to stop the loop. ##"
echo " #########################################"
echo "Starting in 5 seconds..."
sleep 1
echo "Starting in 4 seconds..."
sleep 1
echo "Starting in 3 seconds..."
sleep 1
echo "Starting in 2 seconds..."
sleep 1
echo "Starting in 1 seconds..."
sleep 1
java -Xms128M -Xmx2000M -jar spigot.jar --log-strip-color
Weiß jmd woran das liegt?
Ein do muss auch zwingend immer mit einem done enden um den Kreislauf (die while-Schleife in dem Fall) zu schließen.
Setze also in die vorletzte Zeile ein
done
Setze also in die letzte letzte Zeile ein
exit 0
um das Script ordentlich mit einer "Kein Fehler" Meldung zu beenden.
Linuxhase
ganz am Ende des Codes muss
done
stehen, das beendet die oben mit while begonnene Endlosschleife.
Unerwartetes Dateiende
der Interpreter erwarte eben "done"
Die Schleife while muss mit done beendet werden:
while <bedingung>; do
# ..
done
Deine echo Befehle (nicht durch POSIX standardisiert) solltest du außerdem durch ein cat ersetzen:
cat <<EOF
Hier deine mehrzeiligen Nachrichten eintragen
EOF
Die mehrfachen Aufrufe von sleep und die Ausgabe (über echo) kannst du besser durch ein for ersetzen. Die Ausgabe erfolgt lieber über printf, weil echo nicht standardisiert ist.
Und Schleifen beendet man nicht einfach über ein SIGINT (Unix Signal wenn du Ctrl+C drückst). Ersetze das durch eine vernünftige Logik, damit das Skript in Zukunft leicht erweiterbar ist und nicht von deinen Signalen abhängt.
Hey,
ich kann das zwar gerade nicht überprüfen, jedoch glaube ich, musst du das -jar zu -java ändern.
Mfg Jannick (L1nd)
Soll ja ein Java Aufruf sein, dass Dateiende .jar hat damit ja nur bedingt was zu tun
Weil du die while schleife nicht beendest
mal davon abgesehen dass die da gar kein sinn macht. Nimm das „while true...“ raus