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 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).
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