Parandus: süntaksi viga ootamatu tokeni lähedal `('

Tõrketeate süntaksi tõrge ootamatu tokeni lähedal ((' ilmneb Unixi tüüpi keskkonnas Cygwinis ja Windowsi käsuribaliideses). Tõrge ilmneb tõenäoliselt siis, kui proovite käivitada muudetud koorega skripti või mis on loodud vanemates DOS / Windows või Mac süsteemides.

Süntaksiviga ootamatu tokeni lähedal `('

See tõrketeade katab ka siis, kui sisestate Linuxi käsureale käske igapäevasteks toiminguteks, näiteks failide käsitsi kopeerimiseks jne. Selle tõrketeate ilmnemise peamised põhjused on kas halva süntaksi või OS-i probleem teise süsteemi käskude tõlgendamisel / kest.

Mis põhjustab süntaksi tõrke ootamatu tokeni lähedal ((?)?

Selle tõrketeate põhjused on väga erinevad ja neid ei saa ühes artiklis loetleda, kuna käskude täitmisel on tuhandeid võimalusi süntaksiks valesti. Selle vea peamised põhjused on:

  • Vigane süntaks mõlema platvormi mis tahes käsu täitmisel. Kas te ei kasuta käsku õigesti või olete sisestanud vale süntaksi.
  • Kest ei ühildu Unix / DOS-süsteemide vahel.
  • Bash-kesta skripti käivitamisel teisest allikast on probleeme.

Selles artiklis eeldame, et teate kodeerimise põhitõdesid ja teil on ettekujutus, mida teete. Kui olete algaja, on kõige parem järgida põhjalikke õpetusi selle keele / käsu kohta, mida proovite täita. Tõenäoliselt olete mõnes süntaksis vea teinud.

1. lahendus: kontrollige käskude süntaksit ja vormingut

Esimene ja viimane põhjus, miks võite seda tõrketeadet kogeda, on halb süntaks teie koodis või käskude täpse vormingu mittejärgimine. Igal käsul on eelnevalt määratletud vorming, mida näete selle dokumentatsioonis. Mitmed parameetrid on valikulised, teised kohustuslikud.

Lisaks tuleks eriti hoolikalt jälgida lisaruumi, jutumärkide kasutamist ja nõutavaid kohustuslikke parameetreid. Kui mõni neist puudub või on deklareeritud valesti, ei saa te oma koodi käivitada.

Näiteks järgmise koodi asemel

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

Peate selle täitma kujul

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

Samuti veenduge, et täidate käske / koorega skripti õigesti, kui see hõlmab mitut rida.

Parameetri tüübi tõttu on vajalikud kahekordsed jutumärgid. Lisaruum võib ka teie koodi rikkuda ja veateadet sundida. Kontrollige kindlasti käsu, mida täidate, ametlikke dokumente ja kontrollige, kas seal on probleeme.

Lahendus 2: tõrkeotsing teie skripti korral

Kui kasutate keskskripti, mis töötab lähtekoodisüsteemis, kuid tagastab tõrke sihtmärgis, saate selle skripti tõrkeotsinguks saada, kontrollides täitmise ajal salvestatud muutujaid ja seejärel uurides, mis probleemi põhjustab. See on väga levinud põhjus, kuna mitmel juhul üritab kest tõlgendada trükitavat tähemärki.

Proovige käivitada kest parameetriga 'vx'. See näitab meile, milliseid käske juhitakse ja milliseid väärtusi skripti salvestatakse. Siit saate tõrkeotsingut teha ja diagnoosida valesid asju.

Näiteks käivitage skript terminalis pärast vx lisamist järgmiselt:

 # sh -vx ./test_script5.sh 

Skripti sisu saate kontrollida käsu 'kass' abil järgmiselt:

 # kass test_script5.sh 

Lahendus 3: käsu 'dos2unix.exe' kasutamine

Windows / DOS-i tekstifailides on uus rida kombinatsioon Carriage Return (\ r), millele järgneb Line Feed (\ n). Macis (enne Mac OS X) kasutas reavahetus lihtsat veo tagasitulekut (r). Unix / Linux ja Mac OS X kasutavad reavahetuse (\ n) reavahetusi. Kui kasutate Cygwini, ei õnnestu see DOS / Windowsi ja vanemate Maci tehtud skripte töödelda täiendava sümboli Carriage Return (r) tõttu.

Kasutades käsku 'dos2unix.exe'

Siin saate teha käsu 'dos2unix.exe', mis teisendab skripti õigesse vormingusse ja saate selle siis ilma probleemideta käivitada.

Kokkuvõtteks peate uurima oma käske ja kasutatava platvormi tüüpi ning veenduma, et seal pole lahknevusi. Kuna me ei saa kõiki võimalusi käsitleda, oleks teil idee, milliseid vigu võib esineda ja kuidas neid parandada.

Huvitavad Artiklid