NUSTATYTI: Sintaksės klaida šalia netikėto prieigos rakto '('



Išbandykite Mūsų Instrumentą, Kaip Pašalinti Problemas

Klaidos pranešimas sintaksės klaida šalia netikėto prieigos rakto '(' atsiranda „Unix“ tipo aplinkoje „Cygwin“ ir „Windows“ komandų eilutės sąsajoje. Ši klaida greičiausiai bus suaktyvinta, kai bandysite paleisti apvalkalo scenarijų, kuris buvo redaguotas ar sukurtas senesnėse DOS / Windows arba Mac sistemose.



Sintaksės klaida šalia netikėto prieigos rakto

Sintaksės klaida šalia netikėto prieigos rakto '('



Šis klaidos pranešimas taip pat iškyla, kai įvedate komandas „Linux“ komandų eilutėje atliekant kasdienes užduotis, pvz., Rankiniu būdu kopijuojant failus ir pan. Pagrindinės priežastys, kodėl šis klaidos pranešimas atsiranda, yra dėl netinkamos sintaksės arba OS problemos aiškinant kitos sistemos komandas / apvalkalas.



Kas sukelia netikėtą prieigos raktą „(‘?

Šio klaidos pranešimo priežastys yra labai įvairios ir jų negalima išvardyti viename straipsnyje, nes vykdant komandas yra tūkstančiai neteisingų sintaksės galimybių. Pagrindinės šios klaidos priežastys yra šios:

  • Bloga sintaksė vykdant bet kurią komandą bet kurioje platformoje. Arba jūs netinkamai naudojate komandą, arba įvedėte neteisingą sintaksę.
  • Korpusas nėra suderinamas tarp „Unix / DOS“ sistemų.
  • Yra problemų vykdant „bash shell“ scenarijų iš kitas šaltinis .

Šiame straipsnyje manome, kad jūs žinote kodavimo pagrindus ir turite idėją, ką darote. Jei esate pradedantysis, geriausia vadovautis išsamiomis kalbos / komandos, kurią bandote vykdyti, pamokomis. Jūs tikriausiai suklydote dėl kažkokios sintaksės.

1 sprendimas: komandų sintaksės ir formato tikrinimas

Pirmoji ir svarbiausia priežastis, dėl kurios galite patirti šį klaidos pranešimą, yra blogos sintaksės kodas arba nesilaikote tikslaus komandų formato. Kiekviena komanda turi iš anksto nustatytą formatą, kurį galite pamatyti savo dokumentacijoje. Keletas parametrų yra neprivalomi, kiti privalomi.



Be to, reikia būti ypač atsargiems papildomos vietos , naudojimas dvigubos kabutės , ir privaloma reikalingi parametrai. Jei kurio nors iš jų nėra arba jie buvo paskelbti neteisingai, negalėsite vykdyti savo kodo.

Pavyzdžiui, vietoj šio kodo

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

Jums reikia jį įvykdyti kaip

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

Be to, įsitikinkite, kad tinkamai vykdote komandas / apvalkalo scenarijus, jei jis apima kelias eilutes.

Dėl parametro tipo būtinos dvigubos kabutės. Papildoma vieta taip pat gali sugadinti jūsų kodą ir priversti klaidos pranešimą. Įsitikinkite, kad patikrinote oficialūs dokumentai komandos, kurią vykdote, ir patikrinkite, ar ten nėra problemų.

2 sprendimas: „shell“ scenarijaus trikčių šalinimas

Jei naudojate „shell“ scenarijų, kuris veikia šaltinio sistemoje, tačiau pateikia klaidą taikinyje, galite išspręsti scenarijų triktis, patikrindami kintamuosius, kurie saugomi vykdymo metu, ir tada sužinokite, kas sukelia problemą. Tai yra labai dažna priežastis, nes keliais atvejais apvalkalas bando interpretuoti nespausdinamą personažą.

Pabandykite paleisti apvalkalą su parametru „vx“. Tai parodys, kokios komandos vykdomos ir kokios reikšmės saugomos scenarijuje. Čia galite išspręsti problemas ir diagnozuoti, kas negerai.

Pvz., Vykdykite scenarijų terminale, įtraukę „vx“ kaip:

# sh -vx ./test_script5.sh

Galite patikrinti scenarijaus turinį naudodami komandą „katė“ kaip:

# katė test_script5.sh

3 sprendimas: naudokite komandą „dos2unix.exe“

„Windows“ / DOS teksto failuose nauja eilutė yra „Carriage Return“ ( r), po kurios eina „Line Feed“ ( n), derinys. „Mac“ (prieš „Mac OS X“) eilutės pertraukoje buvo naudojama paprasta „Carriage Return“ ( r). „Unix“ / „Linux“ ir „Mac OS X“ naudojamos eilutės pertraukos ( n) eilutės pertraukos. Jei naudojate „Cygwin“, nepavyks apdoroti DOS / „Windows“ ir senesnių „Mac“ scenarijų dėl papildomo „Carriage Return“ ( r) simbolio.

Naudojant

Naudojant komandą ‘dos2unix.exe’

Čia galite padaryti komandą „dos2unix.exe“, kuri konvertuos scenarijų į teisingą formatą, tada galėsite jį vykdyti be jokių problemų.

Pabaigai reikia ištirti komandas ir naudojamos platformos tipą bei įsitikinti, kad nėra jokių neatitikimų. Kadangi negalime aptarti kiekvienos galimybės, turėtumėte mintį, kokios klaidos gali atsirasti ir kaip jas ištaisyti.

3 minutes perskaityta