Pataisymas: Sintaksės klaida šalia netikėto žetono `('

Klaidos pranešimo sintaksės klaida šalia netikėto rakto `(' įvyksta„ Unix “tipo aplinkoje„ Cygwin “ir„ Windows “komandų eilutės sąsajoje. Ši klaida greičiausiai atsiras bandant paleisti apvalkalo scenarijų, kuris buvo redaguotas arba sukurta senesnėse DOS / Windows ar Mac sistemose.

Sintaksės klaida šalia netikėto žetono `('

Šis klaidos pranešimas taip pat rodomas, kai „Linux“ komandų eilutėje įvedate komandas kasdienėms užduotims, tokioms kaip failų kopijavimas rankiniu būdu ir pan. Pagrindinės priežastys, kodėl šis klaidos pranešimas atsiranda, yra dėl blogos sintaksės arba dėl OS problemos aiškinant kitos sistemos komandas / apvalkalas.

Kas sukelia sintaksės klaidą šalia netikėto žetono `('?

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

  • Netinkama sintaksė vykdant bet kurią komandą bet kurioje platformoje. Arba netinkamai naudojate komandą, arba įvedėte neteisingą sintaksę.
  • Korpusas nėra suderinamas tarp „Unix“ / DOS sistemų.
  • Yra problemų vykdant „bash“ apvalkalo scenarijų iš kito šaltinio .

Šiame straipsnyje darome prielaidą, kad žinote kodavimo pagrindus ir turite idėją, ką darote. Jei esate pradedantysis, geriausia, jei sekate išsamius kalbos / komandos, kurią bandote vykdyti, vadovus. Tikriausiai padarėte klaidą dėl kažkokios sintaksės.

1 sprendimas: patikrinkite komandų sintaksę ir formatą

Pirma ir svarbiausia priežastis, dėl kurios galite patirti šį klaidos pranešimą, yra bloga sintaksė jūsų kodekse arba tai, kad nesilaikote tikslaus komandų formato. Kiekviena komanda turi iš anksto nustatytą formatą, kurį galite pamatyti jos dokumentuose. Kai kurie parametrai yra neprivalomi, o kiti yra privalomi.

Be to, reikia ypač atsargiai skirti vietos, naudoti dvigubas kabutes ir privalomus parametrus. Jei kurio nors iš jų nėra arba jie buvo deklaruoti neteisingai, negalėsite vykdyti savo kodo.

Pavyzdžiui, vietoj šio kodo

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

Jūs turite tai vykdyti kaip

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

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

Dėl parametro rūšies būtinos dvigubos kabutės. Papildoma vieta taip pat gali sugadinti jūsų kodą ir priversti klaidos pranešimą. Įsitikinkite, kad patikrinate oficialius komandos, kurią vykdote, dokumentus ir išsiaiškinkite, ar ten nėra problemų.

2 sprendimas: trikčių šalinimas jūsų apvalkalo scenarijuje

Jei naudojate apvalkalo scenarijų, kuris veikia šaltinio sistemoje, tačiau grąžina tikslo klaidą, galite pašalinti scenarijaus triktis, patikrindami kintamuosius, kurie yra saugomi vykdant, tada pamatysite, kas sukelia problemą. Tai labai dažna priežastis, nes keliais atvejais apvalkalas bando suprasti nespausdinamą simbolį.

Pabandykite paleisti apvalkalą su parametru 'vx'. Tai parodys mums, kokios komandos vykdomos ir kokias vertybes saugo scenarijus. Čia galite pašalinti triktis ir diagnozuoti, kas vyksta blogai.

Pvz., Vykdykite scenarijų terminale pridėję „vx“ kaip:

 # sh -vx ./test_script5.sh 

Skripto turinį galite patikrinti naudodami komandą „katė“ kaip:

 # katė test_script5.sh 

3 sprendimas: Naudokite komandą „dos2unix.exe“

„Windows“ / DOS tekstiniuose failuose nauja eilutė yra vežimo grąžinimo (\ r), po kurios eina eilutės tiekimas (\ n), derinys. „Mac“ (prieš „Mac OS X“) linijos pertrauka naudojo paprastą vežimo grįžimą (r). „Unix“ / „Linux“ ir „Mac OS X“ naudoja eilučių pertraukas (\ n). Jei naudojate „Cygwin“, nepavyks apdoroti scenarijų, kuriuos sukūrė „DOS“ / „Windows“ ir senesnė „Mac“, dėl papildomo vežimo grįžimo (r) simbolio.

Naudodamiesi komanda „dos2unix.exe“

Čia galite sudaryti komandą „dos2unix.exe“, kuri pavers scenarijų tinkamu formatu ir galėsite jį vykdyti be jokių problemų.

Baigdamas reikia išsiaiškinti savo komandas ir naudojamos platformos tipą bei įsitikinti, kad nėra jokių neatitikimų. Kadangi mes negalime aprėpti visų galimybių, turėtumėte idėją, kokių tipų klaidų gali būti ir kaip jas ištaisyti.

Įdomios Straipsniai