Syntaxisfout: onverwacht einde van bestand – Bash-script [gesloten]

Gesloten . Deze vraag heeft details of duidelijkheid nodig. Het accepteert momenteel geen antwoorden.

Reacties

  • (0) Het zou misschien handiger zijn geweest om ons een verschil te laten zien van de laatste versie die werkte. …………………… Enkele observaties (die waarschijnlijk niet verband houden met uw huidige, specifieke probleem): (1) Ik ken geen enkele omstandigheid waarin u een niet-ontsnapte ; (puntkomma) aan het einde van een regel. U kunt de puntkommas aan het einde van regel 157, 161, 165, 168 en 169 verwijderen. (Of u kunt ze laten staan; ik denk dat het een kwestie van stijl is.)… (Vervolg)
  • (Vervolg)… (2) Je moet altijd shell-variabelen citeren, tenzij je een goede reden hebt om dit niet te doen en je zeker weet wat je doet; bijv. "$1", "$2", "$SECONDS" en "$starttime". (3) Het is gemakkelijker om code te lezen en te debuggen die correct is ingesprongen. (4) Waarom stel je FS in en gebruik je het dan niet? (5) `…` kan worden geschreven als $(…). (6) $(($SECONDS - $starttime)) kan op equivalente wijze worden geschreven als $((SECONDS - starttime)). Nogmaals, dit is in feite een kwestie van stijl. (7) Waarom druk je "$words_read" in de lus af als je het niet in de lus aanpast?
  • Hier is een benadering voor foutopsporing: probeer regels 157- te verwijderen 174 en het script opnieuw uitvoeren. Als je nog steeds de foutmelding krijgt (waarschijnlijk gerapporteerd als zijnde op regel 157 of 158), dan weet je dat het probleem niet is in regel 157-174, en dat je verder moet kijken (herhaal dus het proces totdat de fout verdwijnt). … (vervolg)
  • (vervolg) … Zodra de fout is verdwenen, plaatst u de laatste regels die u hebt verwijderd weer en begint u ze weg te werken. Als het verwijderen van regels 157-174 bijvoorbeeld de fout doet verdwijnen, plaats ze dan weer terug, maar verwijder vervolgens regels 159-160, 163-168 en 171-172. Vervang de `grep …` door een lijst met waarden. Gebruik met andere woorden het eliminatieproces.
  • Opmerkingen over enkele opmerkingen van Scott ': (advertentie 2) als u zeker weet wat u doet dan (in de geposte code) alleen "$1" behoeft aanhalingstekens, (advertentie 4) waarschijnlijk bedoelde hij IFS (en niet FS)?

Antwoord

Het diagnostische ” onverwachte einde van het bestand “ is een hint dat je een ongeëvenaarde of niet-beëindigde syntactische openingsconstructie hebt (if w / o fi, do zonder done, haakjes openen zonder de bijbehorende sluitende, maar niet afgesloten aanhalingstekens openen, etc.). Het regelnummer dat naar het einde van het script wijst, is in dit geval niet nuttig, behalve dat je je syntactische constructies moet inspecteren; de fout kan overal in uw code staan. U moet dat controleren.

Opmerkingen

  • Bedankt voor het antwoord. Ik heb de fout gevonden en opgelost!
  • – de fout kan overal in uw code staan. Account aangemaakt om voor dit advies te stemmen.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *