Syntaksfejl: uventet slutning af fil – Bash-script [lukket]

Lukket . Dette spørgsmål har brug for detaljer eller klarhed . Det accepteres i øjeblikket ikke svar.

Kommentarer

  • (0) Det kunne have været mere nyttigt at vise os en forskel fra den sidste version, der fungerede. ……………………… Nogle observationer (som sandsynligvis ikke vedrører dit nuværende, specifikke problem): (1) Jeg kender ikke nogen omstændigheder, hvor du har brug for en ikke-undsluppet ; (semikolon) i slutningen af en linje. Du kan slette semikolonerne i enderne af linierne 157, 161, 165, 168 og 169. (Eller du kan lade dem være; jeg antager, det er et spørgsmål om stil.) … (Fortsat)
  • (Fortsat) … (2) Du bør altid citere shellvariabler, medmindre du har en god grund til ikke, og du er sikker på, at du ved hvad du laver; f.eks. "$1", "$2", "$SECONDS" og "$starttime". (3) Det er lettere at læse og fejle kode, der er indrykket korrekt. (4) Hvorfor indstiller du FS og derefter ikke bruger det? (5) `…` kan skrives $(…). (6) $(($SECONDS - $starttime)) kan ækvivalent skrives $((SECONDS - starttime)). Igen er dette dybest set et spørgsmål om stil. (7) Hvorfor udskriver du "$words_read" i sløjfen, når du ikke ændrer den i sløjfen?
  • Her er en fejlfindingsmetode: Prøv at slette linier 157- 174 og kører scriptet igen. Hvis du stadig får fejlen (sandsynligvis rapporteret som ved linje 157 eller 158), ved du, at problemet ikke er i linje 157-174, og du skal se længere tilbage (så gentag processen, indtil fejlen forsvinder). … (Fortsat)
  • (Fortsat) … Når fejlen forsvinder, skal du sætte de sidste linjer, du slettede tilbage i, og begynde at kaste bort dem. For eksempel, hvis sletning af linjer 157-174 får fejlen til at forsvinde, skal du sætte dem tilbage, men derefter slette linjer 159-160, 163-168 og 171-172. Prøv at erstatte `grep …` med en liste over værdier. Brug med andre ord eliminationsprocessen.
  • Bemærkninger til nogle få af Scott ' s kommentarer: (annonce 2) hvis du er sikker på hvad du laver så (i den indsendte kode) er det kun "$1", der skal citeres, (annonce 4) sandsynligvis mente han IFS (og ikke FS)?

Svar

Den diagnostiske ” uventede slutning af fil “ er et antydning om, at du har en uovertruffen eller ikke-afsluttet syntaktisk åbningskonstruktion (if uden fi, do uden done, åbning af parenteser uden den tilhørende lukning, åbning men uafsluttede tilbud osv.). Linjenummeret, der peger på slutningen af scriptet, er ikke nyttigt i dette tilfælde ud over at sige at inspicere dine syntaktiske konstruktioner; fejlen kan være hvor som helst i din kode. Du skal kontrollere det.

Kommentarer

  • Tak for svaret. Jeg har fundet fejlen og rettet den!
  • – fejlen kan være hvor som helst i din kode. Oprettet konto bare for at stemme for dette råd.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *