Fiks Bash Syntax Error Near Unexpected Token

Koding i Linux Bash Terminal har blitt en dominerende praksis i kodingssektoren. Programvaren Ingeniører og studenter som lærer kodespråket kommer over forskjellige feil. Hvis du gjentatte ganger har sett feil som Syntax error near unexpected token «(« eller Bash syntax error near unexpected token, kan du prøve å stole på metodene beskrevet i artikkelen og bli en dyktig koder. Les metodene beskrevet i artikkelen i artikkelen rekkefølgen beskrevet og fiks feilene i kommandolinjene på filen din.

Hvordan fikse Bash Syntax Error Near Unexpected Token

Linux Bash er en kommandolinjetolk for det Linux-baserte systemet og er en erstatning for Bourne Shell eller sh. Filene er navngitt med .sh-formatet i Linux Bash-skriptet. Hvis det er formateringsproblemer i koden i shell-skriptet, kan du få en syntaksfeil. Hvis feilen er nær tegnet (, vil skallet be deg om feilen i linjen og vil vise feilen på den tilsvarende linjen. Siden Linux Bash er en tolk, vil linjen med feilen bli returnert til deg i terminalen, og den vil slutte å skanne resten av kommandoene i skriptet. Derfor må du fikse feilen på den aktuelle kommandolinjen og fortsette til neste for å fikse den uventede tokenfeilen i shell-skriptet. Årsakene til syntaksen feil nesten uventet token i Linux Bash er oppført nedenfor i denne delen som nedenfor:

  • Koding med escape-sekvenser- Hvis du har skrevet kodene i Bash-skripting, kan escape-sekvensene eller anførselstegnene i skriptet forårsake feil. Escape-sekvensene og anførselstegnene må skrives i riktig format for å fikse feilen.

  • Feil syntaks i kodingsfilen- Syntaksen i koden kan gi syntaksfeil hvis kommandoen er skrevet i feil syntaks som å endre rekkefølgen på løkker.

  • Feil bruk av kommandoen – Hvis du ikke bruker kommandoen riktig, for eksempel feil verditilordning, kan det hende du har en syntaksfeil.

  • Inkompatibelt OS i systemene – Hvis skallet for kodingsskriptet ikke er kompatibelt mellom Unix- og DOS-systemene, kan du få en uventet feil.

  • Problemer i bash shell-skriptet- Problemene som kjører i bash-shell-skriptet på filen som er kopiert fra et annet system, kan gi den uventede token-feilen.

Tenk på en fil som heter example.sh opprettet i Linux Bash-skriptet med følgende kommandolinjer for forklarende formål. Eksempelfilen har muligheter for syntaksfeil og inkluderer alle mulige kommandoer som kan brukes i shell-skriptet.

str= ‘First command line of ‘(example file)’ in the script’
str= [(1,2),(3,4)]
if[ $day == “mon” ] then
 echo “mon”
else
 echo “no mon”
fi
for VARIABLE in {0..2}; then
do echo command1; echo command2; echo command3; echo command4; done
while true; do if [ $ day == “mon” ]; then echo “mon”; else echo “not mon”; done; fi

Metode 1: Reparer feil manuelt på hver kommandolinje

Den første metoden for å fikse feilene er å fikse syntaksfeilen manuelt i hver kommandolinje i skriptet. Trinnene for å løse syntaksfeilene nær uventet token i kommandolinjene er diskutert i denne delen. Prosessen for å fikse den uventede token-feilen i terminalen er beskrevet nedenfor. Kjør filen i terminalen ved å skrive ./example.sh-kommandoen og trykke Enter-tasten.

2. Legg merke til linjene som har den uventede token-feilen i kommandolinjene på resultatet nedenfor.

3. Rett opp feilen i hver linje ved å følge metodene beskrevet nedenfor individuelt og lagre filen.

4. Kjør filen igjen etter endringene og sjekk om syntaksfeilen er løst på filen.

Trinn I: Les innholdet i filen

Det første trinnet for å løse syntaksfeilen i kommandolinjene er å lese filen i terminalen. HVIS det er problemer med filen, kan det hende du ikke kan se filen. Den vanlige praksisen med å vise filen er å kjøre filen ved å bruke kommandoen ./example.sh, men du kan ikke endre innholdet på filen. Alternativene for å se innholdet i filen og endre kommandolinjene for å fikse syntaksfeilen nær uventet token «(« er diskutert nedenfor.

Alternativ 1: Gjennom CAT Command

Det første alternativet er å bruke cat-kommandoen for å vise filen i shell-skriptet. Les innholdet i filen med den uventede token-feilen ved å bruke cat-kommandoen ved å skrive kommandoen cat –v example.sh i terminalen.

Merknad 1: Eksempelet.sh brukes til forklaringsformål, og du må skrive inn navnet på filen som har den uventede token-feilen.

Merknad 2: Cat –v-kommandoen brukes til å vise alle de usynlige tegnene som sannsynligvis representerer vognretur eller no-break-mellomrom.

Alternativ 2: Gjennom VX Command

Hvis du ikke kan bruke cat-kommandoen, kan du prøve å bruke vx-kommandoen for å vise og endre kommandoene på filen ved å bruke trinnet gitt nedenfor. Skriv inn kommandoen sh –vx ./example.sh i terminalen for å åpne filen.

Alternativ 3: Gjennom od –a Command

3. Hvis det er noen få usynlige tegn i kommandolinjene, kan du bruke kommandoen od –a for å vise filen. Hvis innholdet i filen ikke er synlig i kodefilen, kan du prøve å lese filen ved å bruke kommandoen od –a example.sh for å endre koden.

Trinn II: Fjern linjeskift i Windows

Hvis det er Windows-linjeskift i skallskriptet, kan du bruke konsollkommandoene til å fjerne linjeskiftene og kopiere kodelinjene til en ny fil for å fikse feilen.

Skriv inn følgende kommando i terminalen for å lagre innholdet i filen til en annen fil kalt correctedexample.sh for å fjerne Windows-linjeskiftene i skriptet.

tr –d ‘r’ <example.sh> correctedexample.sh

Trinn III: Sett tillatelser til nyopprettet fil

Du må angi tillatelsen til den nyopprettede filen for å redigere filen slik at filen kan kjøres i skallet. Skriv inn kommandoen som chmod 755 correctedexample.sh i terminalen for å gi tillatelsene til filen og kjør filen. Du kan nå se den korrigerte filen og fikse formateringsproblemene og fikse syntaksfeilen nær uventet token «(« i filen.

Trinn IV: Formater kode i filen

Det andre trinnet er å formatere kodelinjene individuelt og endre kommandolinjene manuelt på filen. Alternativene for å formatere filen for å fikse syntaksfeilen nær uventet token «(« er diskutert nedenfor i denne delen.

Alternativ 1: Erstatt enkle anførselstegn med doble anførselstegn

Hvis du bruker enkle anførselstegn på kommandolinjene, må du endre kommandoen ved å erstatte det enkle anførselstegn med doble anførselstegn for å fikse syntaksfeilen. I eksempel.sh-filen fjerner du kodelinjene som har « og « eller de enkle anførselstegnene i kommandoen, og erstatter de enkle anførselstegnene med de doble anførselstegnene eller » og ». Her, i eksempelfilen, må du endre koden som str= «Første kommandolinje i «(eksempelfil)» i skriptet»

Merk: De doble anførselstegnene er nødvendige for parametertype-kommandoer som str= «[(1,2),(3,4)]».

Alternativ 2: Legg til $ til strenglinjer

Hvis du har lagt til strengverdier i skriptet, må du legge til en $ til strengverdiene for å fikse syntaksfeilen i skriptet. Legg til $ for kommandolinjene med strengverdiene for å fikse den uventede feilen. Her, i eksempelfilen, endre kommandolinjen som;

str= $ ‘First command line of ‘(example file)’ in the script’

Merk: Hvis du bruker $ i strengverdien, kan du omgå escape-sekvensen for omvendt skråstrek ettersom kommandolinjene dekodes av ANSI C-standarden. Med andre ord, ved å bruke en $ for strengverdi kan du unngå å bruke de doble anførselstegnene i stedet for de enkle anførselstegnene på kommandolinjene.

Alternativ 3: Konverter tabulatorer til mellomrom

Mellomrommene du har igjen mellom to setninger i kommandoen må være mellomrom i stedet for tabulatorer for å fikse syntaksfeilen i skriptet. Hvis du får feilen på Cygwin, kan du prøve å konvertere fanene i kodene til mellomrom for å fikse feilen. Kommandolinjen er gitt nedenfor som;

do echo command1;       echo command2;             echo command3;             echo command4;             done

Kommandoen ovenfor bør skrives om som vist nedenfor for å fikse feilen.

do echo command1; echo command2; echo command3; echo command4; done

Alternativ 4: Bruk escape-tegn

Hvis du bruker et bash-tegn, er det viktig å bruke et escape-tegn sammen med bash-tegnet for å fikse syntaksfeilen. Parentesene eller () er bash-spesialtegn i filen, derfor må du bruke escape-tegnet eller omvendt skråstrek på kommandolinjen for å unnslippe de vanlige tegnene for å utføre kommandoen. Str= «Første kommandolinje i «(eksempelfil)» i skriptet»-kommandoen vil ikke gi en feil i terminalen ettersom escape-tegnet brukes.

Alternativ 5: Bruk mellomrom mellom tegn

Skallskriptet gjenkjenner kommandoene og setningene i skriptet med standardverdiene. Du må sørge for riktig bruk av mellomrom mellom tegnene slik at skallet kan identifisere kommandoen gitt i skriptet. Mellomrommet er et tegn som brukes til å skille mellom to tegn på kommandolinjen. I koden er det ikke noe mellomrom mellom hvis og [, which gives the unexpected token error as the if[ command is not identified by the shell. If the code is changed to if [ $ day == “mon” ]; så kan feilen løses som shell-bulletin-kommandoen hvis den identifiseres av skallet.

Alternativ 6: Bruk kommandoskilletegn for utsagn

De ulike kommandoene i shell-skriptet må deles i setninger for at terminalen skal identifisere individuelle kommandoer. Du må bruke en kommandoseparator for å fikse syntaksfeilen i Linux Bash. Utsagnene i kommandoen må skilles med en kommandoseparator, for eksempel semikolon eller ; eller en ny linje ved å trykke på Enter-tasten. For eksempel kommandoen i koden if [ $ day == “mon” ] så må endres som om [ $ day == “mon” ]; deretter for å fikse feilen. Siden semikolon brukes som kommandoseparator mellom tegnene [ and then, you can fix this error.

Option 7: Remove Additional Statements

Sometimes, you may have added additional statements or may have mixed up the codes in case of multiple nested loops. You need to remove the additional statements on the command lines to fix the Syntax error near unexpected token ‘(’ in the Linux Bash. The bash loops for…done or and the constructional constructs if… fi needs to be in the correct syntax. The example file has the wrong syntax in the for loop has the term then which is used in the if statement. Modifying the code as the following code will fix the unexpected token error. The statement then is an additional statement in the code and removing the term will fix the error.

for VARIABLE in {0..2}; do echo command1; echo command2; echo command3; echo command4; done 

Option 8: Ensure Order of Closing of Statements is Correct

If you are using many nested or conditional construct statements in the shell script, you have to ensure that the loops are closed in the order they are opened. You can use a new line separator to avoid conflicts with the loops. The order of closing the nested loops and conditional statements should be correct and must not be altered. The loops in the code while true; do if [ $ day == “mon” ]; deretter ekko «man»; annet ekko «ikke man»; ferdig; fi må lukkes i riktig rekkefølge. Å endre koden som vist nedenfor kan fikse den uventede token-feilen ettersom rekkefølgen på avslutningen av setningene korrigeres.

while true; do if [ $ day == “mon” ]; then echo “mon”; else echo “not mon”; fi; done

Metode 2: Omskriv kode

Hvis du har kopiert koden og limt den inn i en ny fil på terminalen, kan du prøve å skrive om koden manuelt for å fikse feilen. Feilene i koden kan fikses hvis du har skrevet koden uten formatfeil i shell-skriptet. Dette er fordi de skjulte tegnene og formateringsproblemene i tekstredigeringsprogrammet som Microsoft Word, du kan ha brukt til å kopiere og lime inn koden kan ha gitt feilen.

Metode 3: Bruk Dos2unix.exe-kommandoen

Hvis du bruker et Unix-operativsystem, kan du skrive koder med linjeskifttegnet som n for å gå til neste linje i filen. Men hvis du bruker et Windows OS, må du gå til neste linje i koden ved å bruke vognretur og linjefeed eller rn i filen. Hvis du kjører koden skrevet i Windows OS i Cygwin, kan du få syntaksfeilen nær uventet token «(«.

For å fikse feilen må du fjerne vognreturtegnene ved å bruke kommandolinjeverktøyet DOS til Unix som en tekstfilformatkonvertering. Skriv inn følgende kommando som dos2unix.exe example.sh i terminalen og du kan konvertere filen til Unix-formatet.

***

Artikkelen har diskutert de grunnleggende metodene for å fikse Bash-syntaksfeil nær uventet token «(« i skriptet. Hvis du bruker en Linux Bash, kan du bruke metodene som er forklart i denne delen for å fikse Bash-syntaksfeil nær uventet token. Hvis du har lest hele artikkelen og funnet at innholdet er nyttig, vennligst gi oss beskjed om dine forslag og spørsmål i kommentarfeltet.

  Hva er omvendt SSH-tunneling? (og hvordan du bruker det)