start.sh Skript funktioniert nicht | Minecraft | VServer?

5 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

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

Woher ich das weiß:eigene Erfahrung – Ich benutze seit 2007 Linux und habe LPIC101 und LPIC102

ganz am Ende des Codes muss

done

stehen, das beendet die oben mit while begonnene Endlosschleife.

Unerwartetes Dateiende

der Interpreter erwarte eben "done"

Woher ich das weiß:Berufserfahrung – openSuSE seit 1995

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.

Woher ich das weiß:Berufserfahrung

Hey,

ich kann das zwar gerade nicht überprüfen, jedoch glaube ich, musst du das -jar zu -java ändern.

Mfg Jannick (L1nd)

Woher ich das weiß:Hobby

JanMarcel01  13.08.2019, 17:43

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