Ispravljeno: Sintaksna pogreška u blizini neočekivanog tokena `(‘

Ispravljeno: Sintaksna pogreška u blizini neočekivanog tokena `(‘

Fix Syntax Error Near Unexpected Token

Poruka o pogrešci sintaksna pogreška u blizini neočekivanog tokena `(‘ javlja se u okruženju Unix tipa Cygwin i u sučelju naredbenog retka u sustavu Windows. Ova će se pogreška najvjerojatnije pokrenuti kada pokušate pokrenuti skriptu ljuske koja je uređivana ili kreirana u starijim sustavima DOS / Windows ili Mac.



Sintaksna pogreška blizu neočekivanog tokena `(

Sintaksna pogreška u blizini neočekivanog tokena `(‘

Ova poruka o pogrešci također se pojavljuje kada u Linux naredbe unosite naredbe za svakodnevne zadatke poput ručnog kopiranja datoteka itd. Glavni razlozi zbog kojih se ova poruka pogreške javlja jesu loša sintaksa ili problem OS-a u tumačenju naredbi drugog sustava ljuska.

Što uzrokuje sintaksnu pogrešku u blizini neočekivanog tokena `(‘?

Razlozi za ovu poruku o pogrešci vrlo su raznoliki i ne mogu se navesti u jednom članku jer postoje tisuće mogućnosti pogrešne sintakse prilikom izvršavanja naredbi. Osnovni razlozi ove pogreške su:



  • Loša sintaksa prilikom izvršavanja bilo koje naredbe na bilo kojoj platformi. Ili naredbu ne upotrebljavate ispravno ili ste unijeli pogrešnu sintaksu.
  • Ljuska nije kompatibilan između Unix / DOS sustava.
  • Postoje problemi s pokretanjem skripte bash shell iz drugi izvor .

U ovom članku pretpostavljamo da znate osnove kodiranja i imate ideju što radite. Ako ste početnik, najbolje je da slijedite detaljne upute za jezik / naredbu koju pokušavate izvršiti. Vjerojatno ste pogriješili u nekoj sintaksi.

Rješenje 1: Provjera sintakse i formata naredbi

Prvi i najvažniji razlog zašto biste mogli doživjeti ovu poruku o pogrešci je pogrešna sintaksa u vašem kodu ili ne pridržavanje točnog formata naredbi. Svaka naredba ima unaprijed definirani format koji možete vidjeti u njenoj dokumentaciji. Nekoliko je parametara neobavezno, a ostali su obvezni.

Nadalje, treba biti posebno oprezan dodatni prostor , korištenje dvostruki navodnici , i obvezno potrebni parametri. Ako bilo koji od njih nedostaje ili je pogrešno prijavljen, nećete moći izvršiti svoj kôd.



Na primjer, umjesto sljedećeg koda

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

Morate ga izvršiti kao

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

Također se pobrinite da pravilno izvršavate svoje naredbe / skriptu ljuske ako obuhvaća nekoliko redaka.

Zbog vrste parametra neophodni su dvostruki navodnici. Dodatni prostor također može pokvariti vaš kôd i prisiliti na poruku o pogrešci. Obavezno provjerite službena dokumentacija naredbe koju izvršavate i provjerite ima li tu problema.

Rješenje 2: Rješavanje problema sa skriptom ljuske

Ako koristite skriptu ljuske koja radi u izvornom sustavu, ali vraća grešku u cilju, možete riješiti skriptu provjerom varijabli koje su pohranjene tijekom izvršavanja, a zatim pogledajte što uzrokuje problem. To je vrlo čest uzrok, jer u nekoliko slučajeva ljuska pokušava protumačiti znak koji se ne može ispisati.

Pokušajte pokrenuti ljusku s parametrom 'vx'. To će nam pokazati koje se naredbe izvode i koje su vrijednosti pohranjene u skripti. Ovdje možete riješiti probleme i dijagnosticirati što ide po zlu.

Na primjer, izvršite skriptu u terminalu nakon uključivanja 'vx' kao:

# sh -vx ./test_script5.sh

Sadržaj skripte možete provjeriti pomoću naredbe 'mačka' kao:

# mačka test_script5.sh

Rješenje 3: Korištenje naredbe ‘dos2unix.exe’

U Windows / DOS tekstualnim datotekama novi je redak kombinacija povratka prijevoza ( r) nakon kojeg slijedi uvlačenje retka ( n). Na Macu (prije Mac OS X), prijelom retka koristio je jednostavan povratak nosača ( r). Unix / Linux i Mac OS X koriste prelome redaka ( n). Ako koristite Cygwin, neće uspjeti obraditi skripte izrađene u DOS-u / Windowsima i starijim Mac-ima zbog dodatnog znaka Povratak kočije ( r).

Koristeći

Korištenjem naredbe ‘dos2unix.exe’

Ovdje možete napraviti naredbu ‘dos2unix.exe’ koja će pretvoriti skriptu u ispravan format, a zatim je možete izvršiti bez ikakvih problema.

Da biste zaključili, trebate istražiti svoje naredbe i vrstu platforme koju koristite i osigurati da ne bude odstupanja. Budući da ne možemo pokriti svaku mogućnost, imali biste ideju kakve se pogreške mogu dogoditi i kako ih ispraviti.

3 minute čitanja