Ret Bash-syntaksfejl nær uventet token

Kodning i Linux Bash Terminal er blevet en fremherskende praksis i kodningssektoren. Softwareingeniørerne og studerende, der lærer kodesproget, støder på forskellige fejl. Hvis du gentagne gange har set fejl som Syntax error near unexpected token ‘(‘ eller Bash syntax error near unexpected token, kan du prøve at stole på metoderne beskrevet i artiklen og blive en dygtig koder. Læs metoderne beskrevet i artiklen i rækkefølge beskrevet og ret fejlene i kommandolinjerne på din fil.

Sådan rettes Bash-syntaksfejl nær uventet token

Linux Bash er en kommandolinjefortolker til det Linux-baserede system og er en erstatning for Bourne Shell eller sh. Filerne er navngivet ved hjælp af .sh-formatet i Linux Bash-scripting. Hvis der er formateringsproblemer i koden i shell-scriptet, kan du få en syntaksfejl. Hvis fejlen er tæt på tegnet (, vil shellen bede dig om fejlen i linjen og vil vise fejlen i den tilsvarende linje. Da Linux Bash er en fortolker, vil linjen med fejlen blive returneret til dig i terminalen, og den stopper med at scanne resten af ​​kommandoerne i scriptet. Derfor skal du rette fejlen i den bestemte kommandolinje og fortsætte til den næste for at rette den uventede token-fejl i shell-scriptet. Årsagerne til syntaksen fejl nær uventet token i Linux Bash er angivet nedenfor i dette afsnit som nedenfor:

  • Kodning med escape-sekvenser- Hvis du har skrevet koderne i Bash-scripting, kan escape-sekvenserne eller anførselstegnene i scriptet forårsage fejl. Escape-sekvenserne og anførselstegnene skal skrives i det korrekte format for at rette fejlen.

  • Forkert syntaks i kodningsfilen- Syntaksen i koden kan give syntaksfejlen, hvis kommandoen er skrevet i den forkerte syntaks, såsom at ændre rækkefølgen af ​​loops.

  • Forkert brug af kommandoen – Hvis du ikke bruger kommandoen korrekt, såsom forkert værditildeling, kan du have en syntaksfejl.

  • Inkompatibelt OS i systemerne – Hvis skallen til kodningsscriptet ikke er kompatibel mellem Unix- og DOS-systemerne, kan du have en uventet fejl.

  • Problemer i bash-shell-scriptet – Problemerne, der kører i bash-shell-scriptet på filen, der er kopieret fra et andet system, kan give den uventede token-fejl.

Overvej en fil ved navn example.sh, der er oprettet i Linux Bash-scripting med følgende kommandolinjer til forklarende formål. Eksempelfilen har muligheder for syntaksfejl og inkluderer alle de mulige kommandoer, der kan bruges i shell-scriptet.

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: Ret fejl manuelt i hver kommandolinje

Den første metode til at rette fejlene er at rette syntaksfejlen manuelt i hver kommandolinje i scriptet. Trinene til at løse syntaksfejlene nær uventet token i kommandolinjerne er diskuteret i dette afsnit. Processen til at rette den uventede token-fejl i terminalen er beskrevet nedenfor. Kør filen i terminalen ved at skrive kommandoen ./example.sh og trykke på Enter-tasten.

2. Bemærk de linjer, der har den uventede token-fejl i kommandolinjerne på resultatet nedenfor.

3. Ret fejlen i hver linje ved at følge metoderne beskrevet nedenfor individuelt og gemme filen.

4. Kør filen igen efter ændringerne, og kontroller, om syntaksfejlen er løst på filen.

Trin I: Læs indholdet af filen

Det første skridt til at løse syntaksfejlen i kommandolinjerne er at læse filen i terminalen. HVIS der er problemer med filen, kan du muligvis ikke se filen. Den almindelige praksis med at se filen er at køre filen ved at bruge kommandoen ./example.sh, men du kan ikke ændre indholdet på filen. Mulighederne for at se indholdet af filen og ændre kommandolinjerne for at rette syntaksfejlen nær uventet token ‘(‘ er diskuteret nedenfor.

Mulighed 1: Gennem CAT Command

Den første mulighed er at bruge kat-kommandoen til at se filen i shell-scriptet. Læs indholdet af filen med den uventede token-fejl ved hjælp af cat-kommandoen ved at skrive kommandoen cat –v example.sh i terminalen.

Note 1: Eksempel.sh bruges til forklarende formål, og du skal indtaste navnet på den fil, der har den uventede token-fejl.

Note 2: Cat –v-kommandoen bruges til at vise alle de usynlige tegn, som sandsynligvis repræsenterer carriage return eller no-break space.

Mulighed 2: Gennem VX Command

Hvis du ikke kan bruge kat-kommandoen, kan du prøve at bruge vx-kommandoen til at se og ændre kommandoerne på filen ved at bruge trinnet nedenfor. Indtast kommandoen sh –vx ./example.sh i terminalen for at åbne filen.

Mulighed 3: Gennem od –a kommando

3. Hvis der er et par usynlige tegn i kommandolinjerne, kan du bruge kommandoen od –a til at se filen. Hvis indholdet af filen ikke er synligt i kodefilen, kan du prøve at læse filen ved at bruge kommandoen od –a example.sh for at ændre koden.

Trin II: Fjern Windows Linjeskift

Hvis der er Windows-linjeskift i shell-scriptet, kan du bruge konsolkommandoerne til at fjerne linjeskiftene og kopiere kodelinjerne til en ny fil for at rette fejlen.

Indtast følgende kommando i terminalen for at gemme indholdet i filen til en anden fil ved navn correctedexample.sh for at fjerne Windows linjeskift i scriptet.

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

Trin III: Indstil tilladelser til nyoprettet fil

Du skal indstille tilladelsen til den nyoprettede fil for at redigere filen, så filen kan udføres i skallen. Indtast kommandoen som chmod 755 correctedexample.sh i terminalen for at give tilladelserne til filen og køre filen. Du kan nu se den rettede fil og rette formateringsproblemerne og rette syntaksfejlen nær uventet token ‘(‘ i filen.

Trin IV: Formatér kode i filen

Det andet trin er at formatere kodelinjerne individuelt og ændre kommandolinjerne manuelt på filen. Mulighederne for at formatere filen for at rette syntaksfejlen nær uventet token ‘(‘ er diskuteret nedenfor i dette afsnit.

Mulighed 1: Erstat enkelte anførselstegn med dobbelte anførselstegn

Hvis du bruger de enkelte anførselstegn i kommandolinjerne, skal du ændre kommandoen ved at erstatte det enkelte anførselstegn med dobbelte anførselstegn for at rette syntaksfejlen. I eksemplet.sh-filen skal du fjerne kodelinjerne, der har ‘ og ‘ eller de enkelte anførselstegn i kommandoen, og erstatte de enkelte anførselstegn med de dobbelte anførselstegn eller ” og ”. Her, i eksempelfilen, skal du ændre koden som str= “Første kommandolinje i “(eksempelfil)” i scriptet”

Bemærk: De dobbelte anførselstegn er nødvendige for parametertype-kommandoer såsom str= “[(1,2),(3,4)]”.

Mulighed 2: Tilføj $ til strenglinjer

Hvis du har tilføjet strengværdier til scriptet, skal du tilføje en $ til strengværdierne for at rette syntaksfejlen i scriptet. Tilføj $ for kommandolinjerne med strengværdierne for at rette den uventede fejl. Her, i eksempelfilen, skal du ændre kommandolinjen som;

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

Bemærk: Hvis du bruger $ i strengværdien, kan du omgå backslash escape-sekvensen, da kommandolinjerne afkodes af ANSI C-standarden. Med andre ord, ved at bruge en $ for strengværdi, kan du undgå at bruge de dobbelte anførselstegn i stedet for de enkelte anførselstegn i kommandolinjerne.

Mulighed 3: Konverter tabulatorer til mellemrum

De mellemrum, du har tilbage mellem to udsagn i kommandoen, skal være mellemrum i stedet for tabulatorer for at rette syntaksfejlen i scriptet. Hvis du får fejlen på Cygwin, kan du prøve at konvertere fanerne i koderne til mellemrum for at rette fejlen. Kommandolinjen er givet nedenfor som;

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

Ovenstående kommando skal omskrives som vist nedenfor for at rette fejlen.

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

Mulighed 4: Brug Escape-tegn

Hvis du bruger et bash-tegn, er det vigtigt at bruge et escape-tegn sammen med bash-tegnet for at rette syntaksfejlen. Parenteserne eller () er bash-specialtegn i filen, derfor skal du bruge escape-tegnet eller omvendt skråstreg i kommandolinjen for at undslippe de normale tegn for at udføre kommandoen. Str= ‘Første kommandolinje i ‘(eksempelfil)’ i scriptet’-kommandoen ville ikke give en fejl i terminalen, da escape-tegnet bruges.

Mulighed 5: Brug mellemrum mellem tegn

Shell-scriptet genkender kommandoerne og sætningerne i scriptet med standardværdierne. Du skal sikre den korrekte brug af mellemrummet mellem tegnene, så skallen kan identificere kommandoen i scriptet. Mellemrummet er et tegn, der bruges til at skelne mellem to tegn på kommandolinjen. I koden er der ingen mellemrum mellem 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 fejlen løses som shell-bulletin-kommandoen, hvis den identificeres af shellen.

Mulighed 6: Brug kommandoseparator til udsagn

De forskellige kommandoer i shell-scriptet skal adskilles i sætninger, for at terminalen kan identificere individuelle kommandoer. Du skal bruge en kommandoseparator for at rette syntaksfejlen i Linux Bash. Udsagn i kommandoen skal adskilles af en kommandoseparator såsom et semikolon eller et ; eller en ny linje ved at trykke på Enter-tasten. For eksempel kommandoen i koden if [ $ day == “mon” ] så skal ændres som om [ $ day == “mon” ]; derefter for at rette fejlen. Da semikolon bruges som kommandoseparator mellem 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” ]; derefter ekko “man”; ellers ekko “ikke mon”; Færdig; fi skal lukkes i den rigtige rækkefølge. Ændring af koden som vist nedenfor kan rette den uventede token-fejl, efterhånden som rækkefølgen af ​​afslutningen af ​​udsagn korrigeres.

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

Metode 2: Omskriv kode

Hvis du har kopieret koden og indsat den i en ny fil på terminalen, kan du prøve at omskrive koden manuelt for at rette fejlen. Fejlene i koden kan rettes, hvis du har skrevet koden uden formatfejl i shell-scriptet. Dette skyldes, at de skjulte tegn og formateringsproblemerne i teksteditoren, såsom Microsoft Word, du måske har brugt til at kopiere og indsætte koden, kan have givet fejlen.

Metode 3: Brug kommandoen Dos2unix.exe

Hvis du bruger et Unix-operativsystem, kan du skrive koder med linjeskift-tegnet som n for at gå til næste linje i filen. Men hvis du bruger et Windows-operativsystem, skal du flytte til næste linje i koden ved at bruge carriage return og line feed eller rn i filen. Hvis du udfører koden skrevet i Windows OS i Cygwin, kan du få syntaksfejlen nær uventet token ‘(‘.

For at rette fejlen skal du rydde vognreturtegnene ved at bruge kommandolinjeværktøjet DOS til Unix som en tekstfilformatkonverter. Indtast følgende kommando som dos2unix.exe example.sh i terminalen, og du kan konvertere filen til Unix-formatet.

***

Artiklen har diskuteret de grundlæggende metoder til at rette Bash-syntaksfejl nær uventet token ‘(‘ i scriptet. Hvis du bruger en Linux Bash, kan du bruge metoderne, der er forklaret i dette afsnit til at rette Bash-syntaksfejl nær uventet token. Hvis du har læst hele artiklen og fundet indholdet nyttigt, så fortæl os venligst dine forslag og spørgsmål i kommentarfeltet.

  De bedste note-apps til iPhone og iPad