Syntaksfeil: uventet slutt på fil – Bash-skript [lukket]

Stengt . Dette spørsmålet trenger detaljer eller klarhet . Det aksepteres for øyeblikket ikke svar.

Kommentarer

  • (0) Det kan ha vært mer nyttig å vise oss en forskjell fra den siste versjonen som fungerte. ……………………… Noen observasjoner (som sannsynligvis ikke er relatert til ditt nåværende, spesifikke problem): (1) Jeg vet ikke om noen omstendighet der du trenger en unescaped ; (semikolon) på slutten av en linje. Du kan slette semikolonene på endene av linjene 157, 161, 165, 168 og 169. (Eller du kan la dem være; jeg antar at det er et spørsmål om stil.) … (Fortsatt)
  • (Forts.) … (2) Du bør alltid sitere skallvariabler med mindre du har en god grunn til ikke, og du er sikker på at du vet hva du gjør; f.eks. "$1", "$2", "$SECONDS" og "$starttime". (3) Det er lettere å lese og feilsøke koden som er riktig innrykket. (4) Hvorfor angir du FS og ikke bruker den? (5) `…` kan skrives $(…). (6) $(($SECONDS - $starttime)) kan ekvivalent skrives $((SECONDS - starttime)). Igjen, dette er i utgangspunktet et stilstilstand. (7) Hvorfor skriver du ut "$words_read" i løkken når du ikke endrer den i løkken?
  • Her er en feilsøkingsmetode: Prøv å slette linjene 157- 174 og kjører skriptet igjen. Hvis du fremdeles får feilen (sannsynligvis rapportert som på linje 157 eller 158), vet du at problemet ikke er i linje 157-174, og du må se lenger tilbake (så, gjenta prosessen til feilen forsvinner). … (Fortsatt)
  • (Fortsatt) … Når feilen forsvinner, setter du de siste linjene du slettet tilbake i, og begynner å pusse bort dem. Hvis for eksempel feilen forsvinner hvis du sletter linjene 157-174, setter du dem inn igjen, men sletter deretter linjene 159-160, 163-168 og 171-172. Prøv å erstatte `grep …` med en liste over verdier. Bruk med andre ord eliminasjonsprosessen.
  • Merknader til noen få av Scott ' s kommentarer: (annonse 2) hvis du er sikker på hva du gjør da (i postet kode) trenger bare "$1" å sitere, (annonse 4) sannsynligvis mente han IFS (og ikke FS)?

Svar

Den diagnostiske » uventede slutten på filen « er et hint om at du har noen uovertruffen eller ikke-avsluttet syntaktisk åpningskonstruksjon (if uten fi, do uten done, åpning av parenteser uten tilhørende lukkende, åpning men uavbrutt anførselstegn, etc.). Linjenummeret som peker mot slutten av skriptet, er ikke nyttig i dette tilfellet, utover å si for å inspisere dine syntaktiske konstruksjoner; feilen kan være hvor som helst i koden din. Du må sjekke det.

Kommentarer

  • Takk for svaret. Jeg har funnet feilen og fikset den!
  • – feilen kan være hvor som helst i koden din. Opprettet konto bare for å stemme for dette rådet.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *