Popravi: Napaka sintakse v bližini nepričakovanega žetona `('

Napaka sintakse sporočila o napaki blizu nepričakovanega žetona `('se pojavi v okolju tipa Unix, Cygwin in v vmesniku ukazne vrstice v operacijskem sistemu Windows. Ta napaka bo najverjetneje sprožena, ko poskusite zagnati skript lupine, ki je bil urejen oz. ustvarjen v starejših sistemih DOS / Windows ali Mac.

Napaka sintakse v bližini nepričakovanega žetona `('

To sporočilo o napaki se pojavi tudi med vnosom ukazov v ukazno vrstico Linux za vsakodnevna opravila, kot je ročno kopiranje datotek itd. Glavni razlogi za to sporočilo o napaki so zaradi slabe skladnje ali težave OS pri interpretaciji ukazov drugega sistema / lupina.

Kaj povzroča sintaksično napako v bližini nepričakovanega žetona `('?

Razlogi za to sporočilo o napaki so zelo raznoliki in jih ni mogoče navesti v enem članku, saj je na tisoče možnosti, da bi sintaksa pri izvajanju ukazov šla narobe. Glavni razlogi za to napako so:

  • Slaba skladnja pri izvajanju katerega koli ukaza na kateri koli platformi. Ali ukaza ne uporabljate pravilno ali ste vnesli napačno skladnjo.
  • Lupina ni združljiva med Unix / DOS sistemi.
  • Obstajajo težave pri zagonu skripta bash shell iz drugega vira .

V tem članku predvidevamo, da poznate osnove kodiranja in imate predstavo, kaj počnete. Če ste začetnik, je najbolje, da sledite poglobljenim vajam jezika / ukaza, ki ga poskušate izvesti. Verjetno ste zmotili neko skladnjo.

1. rešitev: Preverjanje sintakse in oblike ukazov

Prvi in ​​glavni razlog, zakaj lahko pride do tega sporočila o napaki, je napačna sintaksa v kodi ali če ne sledite natančni obliki ukazov. Vsak ukaz ima vnaprej določeno obliko, ki jo lahko vidite v njegovi dokumentaciji. Nekaj ​​poljubnih parametrov, drugi pa so obvezni.

Poleg tega je treba še posebej paziti na dodaten prostor, uporabo dvojnih narekovajev in zahtevane obvezne parametre. Če kateri od njih manjka ali je bil nepravilno prijavljen, kode ne boste mogli izvršiti.

Na primer namesto naslednje kode

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

Izvesti ga morate kot

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

Prepričajte se tudi, da pravilno izvajate ukaze / skript lupine, če se razteza več vrstic.

Zaradi vrste parametra so dvojne navedbe potrebne. Dodatni prostor lahko tudi pokvari kodo in prisili sporočilo o napaki. Preverite uradno dokumentacijo ukaza, ki ga izvajate, in preverite, ali je tam kakšna težava.

2. rešitev: Odpravljanje težav s skriptam lupine

Če uporabljate skript lupine, ki deluje v izvornem sistemu, vendar vrne napako v cilj, lahko skript odpravite tako, da preverite spremenljivke, ki so shranjene med izvedbo, in nato vidite, kaj povzroča težavo. To je zelo pogost vzrok, saj v več primerih lupina poskuša razložiti neprimerljiv značaj.

Poskusite zagnati lupino s parametrom 'vx'. To nam bo pokazalo, kateri ukazi se izvajajo in katere vrednosti so shranjene v skriptu. Tu lahko odpravite težave in diagnosticirate, kaj gre narobe.

Na primer izvedite skript v terminalu, potem ko vključite 'vx' kot:

 # sh -vx ./test_script5.sh 

Vsebino skripta lahko preverite z ukazom 'cat' kot:

 # mačka test_script5.sh 

3. rešitev: Uporaba ukaza 'dos2unix.exe'

V besedilnih datotekah Windows / DOS je nova vrstica kombinacija Carriage Return (\ r), ki ji sledi Feed Line (\ n). V operacijskem sistemu Mac (pred Mac OS X) je za prelom vrstice uporabljen preprost Return Carriage (\ r). Unix / Linux in Mac OS X uporabljajo prelome vrstice (\ n). Če uporabljate Cygwin, skripte, ki sta jih naredila DOS / Windows in starejši Mac, ne bo uspel zaradi dodatnega znaka Carriage Return (\ r).

Uporaba ukaza 'dos2unix.exe'

Tukaj lahko naredite ukaz 'dos2unix.exe', ki bo skript pretvoril v pravilno obliko in ga nato brez kakršnih koli težav izvedel.

Za zaključek morate raziskati svoje ukaze in vrsto platforme, ki jo uporabljate, in se prepričati, da ni razlik. Ker ne moremo zajeti vsake možnosti, imate idejo, kakšne napake se lahko pojavijo in kako jih odpraviti.

Zanimivi Članki