Syntaxfel: oväntat slut på fil – Bash-skript [stängd]

Stängd . Den här frågan behöver detaljer eller tydlighet . För närvarande accepteras inte svar.

Kommentarer

  • (0) Det kan ha varit mer användbart att visa oss en skillnad från den senaste versionen som fungerade. ……………………… Några observationer (som förmodligen inte relaterar till ditt nuvarande specifika problem): (1) Jag känner inte till några omständigheter där du behöver en oskyddad ; (semikolon) i slutet av en rad. Du kan radera semikolonerna i slutet av raderna 157, 161, 165, 168 och 169. (Eller så kan du lämna dem kvar; jag antar att det är en fråga om stil.) … (Fortsättning)
  • (Fortsättning) … (2) Du bör alltid citera skalvariabler om du inte har en god anledning att inte göra det och du är säker på att du vet vad du gör; t.ex. "$1", "$2", "$SECONDS" och "$starttime". (3) Det är lättare att läsa och felsöka koden som är korrekt indragen. (4) Varför ställer du in FS och sedan inte använder den? (5) `…` kan skrivas $(…). (6) $(($SECONDS - $starttime)) kan likvärdigt skrivas $((SECONDS - starttime)). Återigen är detta i princip en stilfråga. (7) Varför skriver du ut "$words_read" i slingan när du inte ändrar den i slingan?
  • Här är en felsökningsmetod: Försök att radera rader 157- 174 och kör skriptet igen. Om du fortfarande får felet (troligen rapporterat till rad 157 eller 158) vet du att problemet inte är i rad 157-174, och du måste titta längre tillbaka (så upprepa processen tills felet försvinner). … (Fortsatt)
  • (Fortsatt) … När felet försvinner, lägg tillbaka de sista raderna som du raderade och börja piska bort dem. Till exempel, om radering av raderna 157-174 gör att felet försvinner, lägg tillbaka dem, men radera sedan raderna 159-160, 163-168 och 171-172. Försök att ersätta `grep …` med en lista med värden. Använd med andra ord eliminationsprocessen.
  • Anmärkningar till några av Scott ' kommentarer: (annons 2) om du är säker på vad du gör då (i den upplagda koden) behöver bara "$1" citeras, (annons 4) förmodligen menade han IFS (och inte FS)?

Svar

Den diagnostiska ” oväntade slutet på filen ” är en ledtråd att du har någon oöverträffad eller obestämd syntaktisk öppningskonstruktion (if utan fi, do utan done, öppningsfästen utan tillhörande stängning, öppnande men obestämda citat, etc.). Linjenumret som pekar på slutet av skriptet är inte till hjälp i det här fallet, förutom att säga att inspektera dina syntaktiska konstruktioner; felet kan finnas var som helst i din kod. Du måste kontrollera det.

Kommentarer

  • Tack för svaret. Jag har hittat felet och åtgärdat det!
  • – felet kan finnas var som helst i din kod. Skapade konto bara för att rösta för detta råd.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *