Frage von EVU1999, 9

Warum geht dieser Skript nicht?

Ich habe einen Skript geschrieben der mein Minecraft Bungeecord-Servernetztwerk herunterfährt. Nun kommt bei mir aber immer: ./alles_off.sh: line 88: syntax error near unexpected token done' ./alles_off.sh: line 88:done '

Mein Skript: http://pastebin.com/U9Cnqxuz

Kann mir bitte jemand sagen warum es nicht geht?

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von TeeTier, 9

Das Skript hat keinen Shebang, aber das ist ja erst mal kein Beinbruch.

Die Syntax der while-Schleife ist falsch, und anders als bei den meisten anderen Programmiersprachen sind Leerzeichen an viel mehr Stellen entweder zwingend, oder verboten.

So sieht die korrekte Schleife aus:

while [ $i -gt 0 ]; do
# ...
done

Vor und nach den eckigen Klammern MUSS sich ein Leerzeichen befinden, es sei denn direkt danach folgt ein Semikolon, NUR dann ist es optional.

Außerdem darf keine Lücke vor und nach dem Gleicheitszeichen bei einer Zuweisung stehen.

Das gleiche Problem bei der Klammerung der if-Bedingungen.

Alles in allem enthält das Skript in fast jeder Zeile mehrere Fehler und es würde den Rahmen sprengen, hier alles rauszupicken.

Du mischst hier viele Dinge, die nicht zusammen gehören. Und was hat das ganze mit der Power-Shell zu tun? Die Syntax dafür sieht nochmal eine ganze Ecke anders aus und dürfte auch nur unter Windows laufen! (geht zwar auch unter Linux, aber das ist mir in der Realität noch nie unter gekommen) :)

Normalerweise schreibt man so ein Skript Schritt für Schritt und testet zwischendurch. Aber du scheinst alles auf einen Schlag geschrieben zu haben, ohne ein einziges mal getestet zu haben. So kann das leider nichts werden. Wie gesagt: Kaum eine einzige Zeile ist fehlerfrei.

Am besten, du schmeißt den ganzen Haufen Müll weg, und fängst nochmal neu von vorne an; dann aber ordentlich. :)

Viel Erfolg! :)

Kommentar von EVU1999 ,

Das mit Powershell hab ich genomman da ich unter Pastebin das meine Meinung nach den am nähsten Syntax.

Dennoch vielen dank!

Antwort
von Linuxhase, 4

Hallo

Warum geht dieser Skript nicht?

Führe es doch mal so aus:

bash -x

um zu sehen  was es wann tut.

Bei mir sieht das essentielle dann so aus¹:

irgendwas.sh: Zeile 32: i: Kommando nicht gefunden.
irgendwas.sh: Zeile 38: Syntaxfehler beim unerwarteten Wort `else'
irgendwas.sh: Zeile 38: ` else'

Linuxhase

-------------------------------------------------------------------------------------------------

¹ Die Zeilennummern sind nicht mit Deinem Script identisch

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten