Fixa Bash Syntax Error Near Unexpected Token

Kodning i Linux Bash Terminal har blivit en dominerande praxis inom kodningssektorn. Programvaruingenjörer och studenter som lär sig kodningsspråket stöter på olika fel. Om du upprepade gånger har sett fel som Syntax error near unexpected token ’(’ eller Bash-syntax error near unexpected token, kan du prova att lita på metoderna som beskrivs i artikeln och bli en skicklig kodare. Läs metoderna som beskrivs i artikeln i ordning beskrivs och åtgärda felen i kommandoraderna på din fil.

Hur man åtgärdar Bash-syntaxfel nära oväntat token

Linux Bash är en kommandoradstolk för det Linux-baserade systemet och är en ersättning för Bourne Shell eller sh. Filerna namnges med .sh-formatet i Linux Bash-skriptet. Om det finns formateringsproblem i koden i skalskriptet kan du få ett syntaxfel. Om felet är nära tecknet (, kommer skalet att uppmana dig till felet i raden och kommer att visa felet på motsvarande rad. Eftersom Linux Bash är en tolk kommer raden med felet att returneras till dig i terminalen och den kommer att sluta skanna resten av kommandona i skriptet. Därför måste du åtgärda felet på den specifika kommandoraden och gå vidare till nästa för att fixa det oväntade tokenfelet i skalskriptet. Orsakerna till syntaxen fel nära oväntat token i Linux Bash listas nedan i detta avsnitt enligt nedan:

  • Kodning med escape-sekvenser- Om du har skrivit koderna i Bash-skript, kan escape-sekvenserna eller citattecken i skriptet orsaka fel. Escape-sekvenserna och citattecken måste skrivas i rätt format för att åtgärda felet.

  • Felaktig syntax i kodningsfilen- Syntaxen i koden kan ge syntaxfelet om kommandot är skrivet i fel syntax som att ändra ordningen på loopar.

  • Fel användning av kommandot – Om du inte använder kommandot korrekt, till exempel felaktig värdetilldelning, kan du ha ett syntaxfel.

  • Inkompatibelt OS i systemen – Om skalet för kodningsskriptet inte är kompatibelt mellan Unix- och DOS-systemen kan du få ett oväntat fel.

  • Problem i bash-skalskriptet- Problemen som körs i bash-skalskriptet på filen som kopierats från ett annat system kan ge det oväntade tokenfelet.

Betrakta en fil med namnet example.sh skapad i Linux Bash-skriptet med följande kommandorader för förklarande syfte. Exempelfilen har möjligheter för syntaxfel och innehåller alla möjliga kommandon som kan användas i skalskriptet.

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

Metod 1: Åtgärda fel manuellt i varje kommandorad

Den första metoden för att fixa felen är att fixa syntaxfelet manuellt på varje kommandorad i skriptet. Stegen för att lösa syntaxfel nära oväntade token i kommandoraderna diskuteras i det här avsnittet. Processen för att åtgärda det oväntade tokenfelet i terminalen beskrivs nedan. Kör filen i terminalen genom att skriva kommandot ./example.sh och trycka på Enter.

2. Notera raderna som har det oväntade tokenfelet i kommandoraderna i resultatet nedan.

3. Åtgärda felet i varje rad genom att följa metoderna som diskuteras nedan individuellt och spara filen.

4. Kör filen igen efter ändringarna och kontrollera om syntaxfelet är löst på filen.

Steg I: Läs innehållet i filen

Det första steget för att lösa syntaxfelet i kommandoraderna är att läsa filen i terminalen. OM det finns problem med filen kanske du inte kan se filen. Vanlig praxis för att visa filen är att köra filen med kommandot ./example.sh men du kan inte ändra innehållet i filen. Alternativen för att se innehållet i filen och ändra kommandoraderna för att fixa syntaxfelet nära oväntat token ’(’ diskuteras nedan.

Alternativ 1: Genom CAT Command

Det första alternativet är att använda kommandot cat för att visa filen i skalskriptet. Läs innehållet i filen med det oväntade tokenfelet med hjälp av cat-kommandot genom att skriva kommandot cat –v example.sh i terminalen.

Obs 1: Exempel.sh används i förklarande syfte och du måste skriva in namnet på filen som har det oväntade tokenfelet.

Note 2: Kommandot cat –v används för att visa alla osynliga tecken som sannolikt representerar vagnretur eller no-break utrymme.

Alternativ 2: Genom VX Command

Om du inte kan använda cat-kommandot kan du prova att använda vx-kommandot för att visa och ändra kommandona på filen med steget nedan. Skriv kommandot sh –vx ./example.sh i terminalen för att öppna filen.

Alternativ 3: Genom od –a kommando

3. Om det finns några osynliga tecken på kommandoraderna kan du använda kommandot od –a för att visa filen. Om innehållet i filen inte är synligt i kodfilen kan du försöka läsa filen med kommandot od –a example.sh för att ändra koden.

Steg II: Ta bort Windows-radbrytningar

Om det finns Windows-radbrytningar i skalskriptet kan du använda konsolkommandona för att ta bort radbrytningarna och kopiera kodraderna till en ny fil för att åtgärda felet.

Ange följande kommando i terminalen för att spara innehållet i filen till en annan fil med namnet correctedexample.sh för att ta bort Windows-radbrytningarna i skriptet.

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

Steg III: Ställ in behörigheter till nyskapad fil

Du måste ställa in behörigheten för den nyskapade filen för att redigera filen så att filen kan köras i skalet. Skriv kommandot som chmod 755 correctedexample.sh i terminalen för att ge behörighet till filen och kör filen. Du kan nu se den korrigerade filen och fixa formateringsproblemen och fixa syntaxfelet nära oväntat token ’(’ i filen.

Steg IV: Formatera kod i filen

Det andra steget är att formatera kodraderna individuellt och ändra kommandoraderna manuellt på filen. Alternativen för att formatera filen för att fixa syntaxfelet nära oväntat token ’(’ diskuteras nedan i det här avsnittet.

Alternativ 1: Ersätt enkla citattecken med dubbla citattecken

Om du använder de enkla citattecken på kommandoraden, måste du ändra kommandot genom att ersätta det enkla citattecken med dubbla citattecken för att fixa syntaxfelet. I filen example.sh tar du bort kodraderna som har ’ och ’ eller de enkla citattecken i kommandot och ersätter de enkla citattecken med dubbla citattecken eller ” och ”. Här, i exempelfilen, måste du ändra koden som str= ”Första kommandoraden i ”(exempelfil)” i skriptet”

Obs: Dubbla citattecken är nödvändiga för kommandon för parametertyp som str= ”[(1,2),(3,4)]”.

Alternativ 2: Lägg till $ till stränglinjer

Om du har lagt till strängvärden till skriptet måste du lägga till en $ till strängvärdena för att fixa syntaxfelet i skriptet. Lägg till $ för kommandoraderna med strängvärdena för att fixa det oväntade felet. Här, i exempelfilen, ändra kommandoraden som;

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

Obs: Om du använder $ i strängvärdet kan du kringgå escapesekvensen för bakåtstreck eftersom kommandoraderna avkodas av ANSI C-standarden. Med andra ord, genom att använda ett $ för strängvärde, kan du undvika att använda de dubbla citattecken istället för de enkla citattecken på kommandoraden.

Alternativ 3: Konvertera Tabs till Mellanslag

Mellanrummen du har kvar mellan två satser i kommandot måste vara mellanslag istället för tabbar för att fixa syntaxfelet i skriptet. Om du får felet på Cygwin kan du försöka konvertera flikarna i koderna till mellanslag för att åtgärda felet. Kommandoraden anges nedan som;

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

Ovanstående kommando bör skrivas om enligt nedan för att åtgärda felet.

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

Alternativ 4: Använd Escape-tecken

Om du använder ett bash-tecken är det viktigt att använda ett escape-tecken tillsammans med bash-tecken för att fixa syntaxfelet. Parentesen eller () är bash-specialtecken i filen, därför skulle du behöva använda escape-tecknet eller omvänt snedstreck på kommandoraden för att escape de normala tecknen för att utföra kommandot. Str= ’Första kommandoraden i ’(exempelfil)’ i skriptet skulle inte ge ett fel i terminalen eftersom escape-tecknet används.

Alternativ 5: Använd mellanslag mellan tecken

Skalskriptet känner igen kommandona och satserna i skriptet med standardvärdena. Du måste säkerställa korrekt användning av utrymmet mellan tecken så att skalet kan identifiera kommandot som ges i skriptet. Mellanslag är ett tecken som används för att skilja mellan två tecken på kommandoraden. I koden finns det inget mellanslag mellan om och [, 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” ]; då kan felet lösas som shell-bulletinkommandot om det identifieras av skalet.

Alternativ 6: Använd kommandoavskiljare för uttalanden

De olika kommandona i skalskriptet måste separeras i satser för att terminalen ska identifiera individuella kommandon. Du måste använda en kommandoseparator för att fixa syntaxfelet i Linux Bash. Uttrycken i kommandot måste separeras med en kommandoavgränsare som ett semikolon eller ett ; eller en ny rad genom att trycka på Enter. Till exempel kommandot i koden if [ $ day == “mon” ] då måste ändras som om [ $ day == “mon” ]; sedan för att åtgärda felet. Eftersom semikolon används som kommandoavgränsare mellan tecknen [ 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” ]; eka sedan ”mån”; annars eko ”inte mån”; Gjort; fi måste stängas i rätt ordning. Genom att ändra koden som visas nedan kan det oväntade tokenfelet åtgärdas när ordningen för avslutande av uttalanden korrigeras.

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

Metod 2: Skriv om koden

Om du har kopierat koden och klistrat in den i en ny fil på terminalen kan du prova att skriva om koden manuellt för att åtgärda felet. Felen i koden kan åtgärdas om du har skrivit koden utan några formatfel i skalskriptet. Detta beror på att de dolda tecknen och formateringsproblemen i textredigeraren som Microsoft Word, du kan ha använt för att kopiera och klistra in koden kan ha gett felet.

Metod 3: Använd kommandot Dos2unix.exe

Om du använder ett Unix-operativsystem kan du skriva koder med radmatningstecknet som n för att flytta till nästa rad i filen. Men om du använder ett Windows OS måste du gå till nästa rad i koden med hjälp av vagnretur och radmatning eller rn i filen. Om du kör koden som skrivits i Windows OS i Cygwin kan du få syntaxfelet nära oväntat token ’(’.

För att åtgärda felet måste du rensa vagnreturtecknen med kommandoradsverktyget DOS till Unix som en textfilformatskonverterare. Skriv följande kommando som dos2unix.exe example.sh i terminalen och du kan konvertera filen till Unix-formatet.

***

Artikeln har diskuterat de grundläggande metoderna för att fixa Bash-syntaxfel nära oväntat token ’(’ i skriptet. Om du använder en Linux Bash kan du använda metoderna som förklaras i det här avsnittet för att fixa Bash-syntaxfel nära oväntat token. Om du har läst hela artikeln och tyckt att innehållet är användbart, vänligen låt oss veta dina förslag och frågor i kommentarsfältet.