Fixa Bash Syntax Error Near Unexpected Token
Miscellanea / / May 30, 2022
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 felen som syntaxfel nära oväntat token '(' eller Bash-syntaxfel nästan oväntat token, du kan prova att lita på metoderna som beskrivs i artikeln och bli en skicklig kodare. Läs metoderna som beskrivs i artikeln i den ordning som beskrivs och åtgärda felen i kommandoraderna på din fil.
Innehåll
- Hur man åtgärdar Bash-syntaxfel nära oväntat token
- Metod 1: Åtgärda fel manuellt i varje kommandorad
- Steg I: Läs innehållet i filen
- Steg II: Ta bort Windows-radbrytningar
- Steg III: Ställ in behörigheter till nyskapad fil
- Steg IV: Formatera kod i filen
- Metod 2: Skriv om koden
- Metod 3: Använd kommandot Dos2unix.exe
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
Våldsamt slag skript. Om det finns formateringsproblem i koden i skalskriptet kan du få ett syntaxfel. Om felet är nära ( tecken, 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 i den specifika kommandoraden och fortsätta till nästa för att fixa det oväntade tokenfelet i skalskriptet. Orsakerna till syntaxfelet nära oväntat token i Linux Bash listas nedan i det här avsnittet 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.
Tänk på en fil som heter exempel.sh skapat 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= 'Första kommandoraden i '(exempelfil)' i skriptet'str= [(1,2),(3,4)]om[ $dag == "mån" ] då eka "mån"annan eka "nej mån"fiför VARIABLE i {0..2}; sedangör ekokommando1; ekokommando2; ekokommando3; ekokommando4; Gjortmedan sant; gör om [ $ dag == "mån" ]; eka sedan "mån"; annars eko "inte mån"; Gjort; 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 Terminal genom att skriva ./exempel.sh kommandot och tryck på Stiga pånyckel-.
2. Notera rader som har det oväntade tokenfelet i kommandoraderna på resultatet nedan.
3. Åtgärda felet i varje rad genom att följa metoderna som diskuteras nedan individuellt och sparande filen.
4. Springa filen igen efter ändringarna och kontrollera om syntaxfelet är löst på filen.
Läs också:Hur man installerar Linux Bash Shell på Windows 10
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 ./exempel.sh men du kan inte ändra innehållet i filen. Alternativen för att visa 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 katt kommando 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 exempel.sh i terminalen.
Anteckning 1: De exempel.sh används i förklarande syfte och du måste ange namnet på filen som har det oväntade tokenfelet.
Anteckning 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 sh –vx ./exempel.sh kommandot 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 prova att läsa filen med kommandot od –a exempel.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'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 filens behörigheter och köra 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 den exempel.sh fil, ta bort kodraderna som har ‘ och ’ eller den enstaka citat i kommandot och ersätt de enstaka citattecken med dubbla citattecken eller den “ och ’’. Här, i exempelfilen, måste du ändra koden som str= "Första kommandoraden i "\(exempelfil)\" i skriptet"
Notera: Dubbla citattecken är nödvändiga för kommandon för parametertyp som t.ex str= "[(1,2),(3,4)]".
Läs också:20 bästa lätta Linux-distros från 2022
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äng värden för att åtgärda det oväntade felet. Här, i exempelfilen, ändra kommandoraden som;
str= $ 'Första kommandoraden i '\(exempelfil)\' i skriptet'
Notera: 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;
gör ekokommando1; ekokommando2; ekokommando3; ekokommando4; Gjort
Ovanstående kommando bör skrivas om enligt nedan för att åtgärda felet.
gör ekokommando1; ekokommando2; ekokommando3; ekokommando4; Gjort
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. De parentes eller () är bash-specialtecken i filen, därför skulle du behöva använda escape-tecknet eller snedstreck på kommandoraden för att undvika de normala tecknen för att utföra kommandot. De str= 'Första kommandoraden i \'(exempelfil)\' i skriptet' kommandot skulle inte ge ett fel i terminalen eftersom escape-tecknet används.
Läs också: Hur man kommer bland oss på Linux
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 [, vilket ger det oväntade tokenfelet som om[ kommandot identifieras inte av skalet. Om koden ändras till if [ $ day == "mån" ]; då kan felet lösas som kommandot shell bulletin om 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 a ; eller en ny rad genom att trycka på Stiga på nyckel. Till exempel kommandot i koden om [ $ dag == "mån" ] då måste ändras som if [ $ day == "mån" ]; sedan för att åtgärda felet. Eftersom semikolon används som kommandoavgränsare mellan tecknen [ och sedan, kan du fixa det här felet.
Alternativ 7: Ta bort ytterligare uttalanden
Ibland kan du ha lagt till ytterligare satser eller kan ha blandat ihop koderna i händelse av flera kapslade loopar. Du måste ta bort de ytterligare satserna på kommandoraderna för att fixa syntaxfelet nära oväntat token '(' i Linux Bash. Bashöglorna för... gjort eller och de konstruktionsmässiga konstruktionerna om... fi måste ha rätt syntax. Exempelfilen har fel syntax i för loop har termen sedan som används i om påstående. Om du ändrar koden som följande kod åtgärdas det oväntade tokenfelet. Påståendet sedan är ett extra uttalande i koden och om du tar bort termen åtgärdas felet.
för VARIABLE i {0..2}; gör ekokommando1; ekokommando2; ekokommando3; ekokommando4; Gjort
Alternativ 8: Se till att ordningen för avslutande av uttalanden är korrekt
Om du använder många kapslade eller villkorliga konstruktionssatser i skalskriptet måste du se till att slingorna stängs i den ordning de öppnas. Du kan använda en ny linjeavgränsare för att undvika konflikter med slingorna. Ordningen för att stänga de kapslade looparna och villkorssatserna bör vara korrekt och får inte ändras. Slingorna i koden medan sant; gör om [ $ dag == "mån" ]; eka sedan "mån"; annars eko "inte mån"; Gjort; fi måste stängas i rätt ordning. Genom att ändra koden enligt nedan kan det oväntade tokenfelet åtgärdas när ordningen för avslutande av uttalanden korrigeras.
medan sant; gör om [ $ dag == "mån" ]; eka sedan "mån"; annars eko "inte mån"; fi; Gjort
Läs också:Vad är en kommandoradstolk?
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 gå 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 \r\n 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 hjälp av DOS till Unix kommandoradsverktyg som en textfilformatskonverterare. Skriv följande kommando som dos2unix.exe exempel.sh i terminalen och du kan konvertera filen till Unix-format.
Rekommenderad:
- Hur man skapar ett Telegram-konto på Android
- Åtgärda Runtime Error C++ på Windows 10
- Hur man tar bort Github-konto permanent
- Topp 14 bästa grafikkort för Linux
Artikeln har diskuterat de grundläggande metoderna för att fixa Bash-syntaxfel nära oväntat token‘(’ i manuset. 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äntade token. Om du har läst hela artikeln och tyckt att innehållet är användbart, vänligen meddela oss dina förslag och frågor i kommentarsfältet.