Popravek: napaka sintakse v bližini nepričakovanega žetona `(& lsquo;

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

Napaka v sintaksi blizu nepričakovanega žetona `('

To sporočilo o napaki se pojavi tudi, ko v ukazno vrstico Linux vnašate ukaze za vsakodnevna opravila, kot je ročno kopiranje datotek itd. Glavni razlog za to sporočilo je napačna sintaksa ali težava OS pri interpretaciji ukazov drugega sistema / lupino.

Kaj povzroča napako v sintaksi blizu nepričakovanega žetona `('?

Razlogi za to sporočilo o napaki so zelo raznoliki in jih ni mogoče našteti v enem članku, saj obstaja napaka pri sintaksi na tisoče pri izvajanju ukazov. Temeljni razlogi za to napako so:

  • Napačna sintaksa pri izvajanju katerega koli ukaza v kateri koli platformi. Ukaz ne uporabljate pravilno ali ste vnesli napačno sintakso.
  • Lupina ni združljiva med sistemi Unix / DOS.
  • Obstajajo težave pri zagonu skripta lupine bash iz drugega vira .

V tem članku predpostavljamo, da poznate osnove kodiranja in imate idejo, kaj počnete. Če ste začetnik, je najbolje, da sledite poglobljenim vajam jezika / ukaza, ki ga želite izvesti. Verjetno ste naredili napako v neki sintaksi.

1. rešitev: Preverjanje skladnje in oblike ukazov

Prvi in ​​najpomembnejši razlog, zakaj lahko pride do tega sporočila o napaki, je napačna sintaksa v kodi ali neupoštevanje natančne oblike ukazov. Vsak ukaz ima vnaprej določeno obliko, ki jo lahko vidite v njegovi dokumentaciji. Več parametrov ni obveznih, drugi pa obvezni.

Poleg tega je treba biti še posebej previden za dodaten prostor , uporabo dvojnih narekovajev in obvezne zahtevane parametre. Če katera od njih manjka ali je bila prijavljena nepravilno, ne boste mogli izvršiti svoje kode.

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 svoje ukaze / skript lupine, če obsega več vrstic.

Zaradi vrste parametra so potrebne dvojne narekovaje. Dodaten presledek lahko uniči tudi vašo kodo in prisili sporočilo o napaki. Preverite uradno dokumentacijo ukaza, ki ga izvajate, in preverite, ali je tam težava.

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

Če uporabljate skript lupine, ki deluje v izvornem sistemu, vendar vrne napako v cilju, lahko odpravite težavo s skriptom tako, da preverite spremenljivke, ki so shranjene med izvajanjem, in nato vidite, kaj povzroča težavo. To je zelo pogost vzrok, saj v več primerih lupina poskuša interpretirati znak, ki ga ni mogoče natisniti.

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 'mačka' kot:

# mačka test_script5.sh

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

V besedilnih datotekah Windows / DOS je nova vrstica kombinacija vrnitve nosilca (\ r), ki ji sledi vrstica (\ n). V Macu (pred Mac OS X) se je pri prelomu vrstice uporabljal preprost vrnitev nosilca (\ r). Unix / Linux in Mac OS X uporabljajo prelome vrstic (\ n). Če uporabljate Cygwin, zaradi dodatnega znaka Carriage Return (\ r) ne bo mogel obdelati skriptov DOS / Windows in starejših Macintosh.

Uporaba ukaza 'dos2unix.exe'

Tu lahko naredite ukaz 'dos2unix.exe', ki pretvori skript v pravilno obliko in ga nato brez težav izvedete.

Za zaključek morate raziskati svoje ukaze in vrsto platforme, ki jo uporabljate, ter se prepričati, da ni nobenih neskladij. Ker ne moremo zajeti vseh možnosti, bi imeli idejo, katere vrste napak se lahko pojavijo in kako jih odpraviti.

Priporočena

Popravek: Minecraft se ne odziva
Kaj je aplikacija za registracijo naprave za digitalni TV sprejemnik in jo je treba odstraniti?
Kaj je FileRepMalware in ali ga morate odstraniti