Rettelse: Syntaksfejl nær uventet token `('

Fejlmeddelelsens syntaksfejl nær uventet token `(' forekommer i et Unix-miljø, Cygwin og i kommandolinjegrænsefladen i Windows. Denne fejl vil sandsynligvis blive udløst, når du prøver at køre et shell-script, der blev redigeret eller oprettet i ældre DOS / Windows eller Mac-systemer.

Syntaksfejl nær uventet token `('

Denne fejlmeddelelse dukker også op, når du indtaster kommandoer i Linux-kommandolinjen til daglige opgaver, f.eks. At kopiere filer manuelt osv. Hovedårsagerne til, at denne fejlmeddelelse opstår, er enten på grund af en dårlig syntaks eller et OS-problem ved fortolkning af et andet systems kommandoer / skal.

Hvad forårsager Syntax Error nær uventet token `('?

Årsagerne til denne fejlmeddelelse er meget forskellige og kan ikke vises i en artikel, da der er tusinder af syntaksmuligheder, der går galt, når du udfører kommandoer. Hovedårsagerne til denne fejl er:

  • Dårlig syntaks, når du udfører en kommando i begge platforme. Enten bruger du ikke kommandoen korrekt eller har indtastet en forkert syntaks.
  • Skallen er ikke kompatibel mellem Unix / DOS-systemer.
  • Der er problemer, der kører bash shell-scriptet fra en anden kilde .

I denne artikel antager vi, at du kender det grundlæggende ved kodning og har en idé om, hvad du laver. Hvis du er nybegynder, er det bedst, at du følger dybdegående tutorials om det sprog / kommando, du prøver at udføre. Du har sandsynligvis begået en fejl ved en eller anden syntaks.

Løsning 1: Kontrol af syntaks og format af kommandoer

Den første og vigtigste grund til, at du muligvis oplever denne fejlmeddelelse, er den for dårlige syntaks i din kode, eller at du ikke følger det nøjagtige format af kommandoerne. Hver kommando har et foruddefineret format, som du kan se i dokumentationen. Flere parametre er valgfri, hvor andre er obligatoriske.

Derudover skal man være ekstra omhyggelig med ekstra plads, brug af dobbelt citater og de obligatoriske parametre, der kræves. Hvis nogen af ​​dem mangler eller er blevet erklæret forkert, kan du ikke udføre din kode.

For eksempel i stedet for følgende kode

 [mycom7] # ./ctopo.sh um_test1 [(1, 2), (2, 1)] 

Du skal udføre det som

 [mycom7] # ./ctopo.sh um_test1 "[(1, 2), (2, 1)]" 

Sørg også for, at du udfører dine kommandoer / shell-script korrekt, hvis det spænder over flere linjer.

På grund af parametertypen er de dobbelte citater nødvendige. En ekstra plads kan også ødelægge din kode og tvinge fejlmeddelelsen. Sørg for at kontrollere den officielle dokumentation for den kommando, du udfører, og se, om der er et problem der.

Løsning 2: Fejlfinding på dit shell-script

Hvis du bruger et shell-script, der fungerer i kildesystemet, men returnerer en fejl i målet, kan du fejlfinde scriptet ved at kontrollere de variabler, der er gemt under udførelsen og derefter se, hvad der forårsager problemet. Dette er en meget almindelig årsag, da skallen i flere tilfælde forsøger at fortolke en ikke-udskrivbar karakter.

Prøv at køre shell med parameteren 'vx'. Dette viser os, hvilke kommandoer der køres, og hvilke værdier, der er gemt i scriptet. Her igennem kan du fejlfinde og diagnosticere, hvad der går galt.

Eksempelvis skal du udføre scriptet i terminalen efter at have inkluderet 'vx' som:

 # sh -vx ./test_script5.sh 

Du kan kontrollere indholdet af scriptet ved hjælp af kommandoen 'cat' som:

 # cat test_script5.sh 

Løsning 3: Brug af kommandoen 'dos2unix.exe'

I Windows / DOS-tekstfiler er en ny linje en kombination af en vognretur (\ r) efterfulgt af en linjeskift (\ n). I Mac (før Mac OS X) anvendte en linjeskift en simpel vognretur (\ r). Unix / Linux og Mac OS X bruger linjeskift på linjeskift (\ n). Hvis du bruger Cygwin, vil det ikke behandle scripts foretaget af DOS / Windows og ældre Mac på grund af den ekstra Carriage Return (\ r) karakter.

Ved hjælp af kommandoen 'dos2unix.exe'

Her kan du lave kommandoen 'dos2unix.exe', som konverterer scriptet til det rigtige format, og derefter kan du udføre det uden problemer.

For at konkludere, skal du undersøge dine kommandoer og den type platform, du bruger, og sørg for, at der ikke er nogen uoverensstemmelser. Da vi ikke kan dække enhver mulighed, ville du have en idé om, hvilke slags fejl der kan opstå, og hvordan du løser dem.

Interessante Artikler