PARANDUS: Süntaksi tõrge ootamatu loa lähedal (('



Proovige Meie Instrumenti Probleemide Kõrvaldamiseks

Veateade süntaksiviga ootamatu märgi lähedal ((’ ilmneb Unix-tüüpi keskkonnas Cygwin ja Windowsi käsurea liideses. See tõrge käivitub tõenäoliselt siis, kui proovite käivitada vanemas DOS- / Windowsi- või Mac-süsteemis muudetud või loodud shelliskripti.



Süntaksi tõrge ootamatu märgi lähedal ((

Süntaksiviga ootamatu loa lähedal ((’



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



Mis põhjustab süntaksi tõrke ootamatu loa '(' lähedal?

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

  • Vale süntaks mõnes platvormis mis tahes käsu täitmisel. Kas te ei kasuta käsku õigesti või olete sisestanud vale süntaksi.
  • Kest pole ühilduvad Unix / DOS-süsteemide vahel.
  • Bashi shelliskripti käitamisel on probleeme teine ​​allikas .

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

1. lahendus: käskude süntaks ja vorming

Esimene ja peamine põhjus, miks see tõrketeade võib ilmneda, on koodis vale süntaks või te ei järgi käskude täpset vormingut. Igal käsul on eelnevalt määratletud vorming, mida näete selle dokumentatsioonis. Mitmed parameetrid on valikulised, teised aga kohustuslikud.



Lisaks tuleks olla eriti ettevaatlik lisaruumi , kasutamine topelt jutumärgid , ja kohustuslik nõutavad parameetrid. Kui mõni neist puudub või on deklareeritud valesti, ei saa te oma koodi täita.

Näiteks järgmise koodi asemel

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

Peate selle täitma kui

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

Samuti veenduge, et täidate oma käsud / shelliskripti õigesti, kui see hõlmab mitut rida.

Parameetri tüübi tõttu on topelt jutumärgid vajalikud. Lisaruum võib rikkuda ka teie koodi ja sundida tõrketeate. Kontrollige kindlasti ametlik dokumentatsioon käsku, mida täidate, ja vaadake, kas seal on probleeme.

2. lahendus: shelliskripti tõrkeotsing

Kui kasutate shelliskripti, mis töötab lähtekoodisüsteemis, kuid tagastab vea sihtmärgil, saate skripti tõrkeotsinguks kontrollida täitmise ajal salvestatud muutujaid ja seejärel vaadata, mis probleemi põhjustab. See on väga levinud põhjus, kuna mitmel juhul üritab kest tõlgendada printimata märki.

Proovige kest käivitada parameetriga ‘vx’. See näitab meile, milliseid käske käivitatakse ja millised väärtused on skripti salvestatud. Siit saate tõrkeotsingut ja diagnoosida, mis valesti läheb.

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

# sh -vx ./test_script5.sh

Skripti sisu saate kontrollida käsuga ‘kass’ järgmiselt:

# kass test_script5.sh

Lahendus 3. Kasutage käsku ‘dos2unix.exe’

Windowsi / DOS-i tekstifailides on uus rida kombinatsioon veo tagasitulekust ( r), millele järgneb rea voog ( n). Macis (enne Mac OS X) kasutati reavahetuses lihtsat Carriage Returni ( r). Unix / Linux ja Mac OS X kasutavad reavahetust ( n). Kui kasutate Cygwini, ei õnnestu DOS / Windowsi ja vanemate Macide skripte töödelda lisamärgi Carriage Return ( r) tõttu.

Kasutamine

Kasutades käsku ‘dos2unix.exe’

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

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

3 minutit loetud