unexpected end of line

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hi Leute,

    ich habe hier ein Script, welches mir einen neuen Pi mit den erforderlichen programmen und einstellungen automatisch aufsetzen soll. Wenn ich dieses allerdings mit

    Code
    bash install_pi.sh

    ausführe, bekomme ich folgende Fehlermeldung:

    Code
    install_pi.sh: line 59: syntax error: unexpected end of file

    Ich habe schon versucht am Ende ein simples "Exit 0" anzuhängen oder eine leere Zeile anzufügen. Beides leider ohne Erfolg. Da das script auf Windows erstellt wurde, habe ich zudem dos2unix ausprobiert, auch das ohne Erfolg.

    Irgendwo in der Syntax muss der fehler zu finden sein, allerdings finde ich ihn nicht, vielleicht könnt ihr ja was finden/vermuten.

    Hier der Code (kein minimalbeispiel, da ohnehin nicht sonderlich groß):

    Viele Grüße,
    BallerNacken

  • Unexpected end of file deutet meistens darauf hin, dass er noch ein Schlüsselwort erwartet, in diesem Fall offensichtlich das fi welches die if-Körper beendet.
    Du solltest dir auch Einrückung angewöhnen, dann ist soetwas besser zu sehen.

  • Es hilft enorm auch wenn man es bei bash nicht muss, Einrückungen zu verwenden. Dann fällt einem normalerweise auch schneller auf wenn beispielsweise eine if nicht geschlossen wurde.

    Es können zwei ' fi ' sein, oder ein ' elif ' und am Ende ein ' fi '.
    Also entweder:

    Code
    if [ $startQuery == "NO" ]; then
        echo quitting
        exit
    fi
    if [ $startQuery == "y" ]; then
        echo
        #...
    fi


    Oder:

    Code
    if [ $startQuery == "NO" ]; then
        echo quitting
        exit
    elif [ $startQuery == "y" ]; then
        echo
        #...
    fi

    Davon abgesehen würde ich aber anstatt der ' if ' ein ' case ' verwenden, damit man sowohl "NO" als auch "no" oder nur "n" oder "N" eingeben kann, ebenso wie "YES" oder "yes" oder "y" oder "Y" . Also case-sensitive. Das wäre mit einem if-Statement sehr umständlich, mit einem case aber sehr einfach. Man könnte zwar beim if "grep" zur Hile nehmen, wäre aber eher untypisch ;)

    Beispiel case:

    Die nächste Verbesserung wäre diese Abfrage in eine Funktion zu packen und falls der Nutzer eine ungültige Eingabe macht, führt man diese Funktion immer wieder aus...
    Beispiel:

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!