Korjaus: Syntaksivirhe lähellä odottamatonta tunnistetta `('

Virheilmoituksen syntaksiavirhe lähellä odottamatonta tunnistetta `(' esiintyy Unix-tyyppisessä ympäristössä, Cygwinissa, ja Windowsin komentoriviliittymässä. Tämä virhe todennäköisesti laukaistaan, kun yrität suorittaa muokatun komentosarjan, tai luotu vanhemmissa DOS / Windows- tai Mac-järjestelmissä.

Syntaksivirhe odottamattoman tunnuksen lähellä `('

Tämä virheviesti ilmestyy myös, kun syötät komentoja Linux-komentoriville päivittäisiin tehtäviin, kuten tiedostojen kopiointiin manuaalisesti jne. Tärkeimmät syyt tämän virheilmoituksen syntymiseen johtuvat joko huonosta syntaksista tai käyttöjärjestelmän ongelmasta toisen järjestelmän komentojen tulkinnassa / kuori.

Mikä aiheuttaa syntaksivirheen lähellä odottamatonta tunnistetta `('?

Syyt tähän virhesanomaan ovat hyvin moninaiset, eikä niitä voida luetella yhdessä artikkelissa, koska syntaksissa on tuhansia mahdollisuuksia mennä pieleen komentojen suorittamisen yhteydessä. Tämän virheen keskeiset syyt ovat:

  • Huono syntaksi suoritettaessa mitään komentoja kummallakin alustalla. Joko et käytä komentoa oikein tai olet syöttänyt väärän syntaksin.
  • Kuori ei ole yhteensopiva Unix / DOS-järjestelmien välillä.
  • Bash-komentosarjan suorittamisessa toisesta lähteestä on ongelmia .

Tässä artikkelissa oletetaan, että tunnet koodauksen perusteet ja sinulla on käsitys mitä teet. Jos olet aloittelija, on parasta, että noudatat perusteellisia ohjeita kielestä / komennosta, jota yrität suorittaa. Olet todennäköisesti tehnyt virheen jossain syntaksissa.

Ratkaisu 1: Tarkista komentojen syntaksi ja muoto

Ensimmäinen ja tärkein syy siihen, miksi saatat kokea tämän virhesanoman, on koodin huono syntaksi tai se, että et noudata komentojen tarkkaa muotoa. Jokaisella komennolla on ennalta määritetty muoto, joka voidaan nähdä sen ohjeissa. Useat parametrit ovat valinnaisia, toiset ovat pakollisia.

Lisäksi on kiinnitettävä erityistä huomiota ylimääräiseen tilaan, kaksinkertaisen lainausmerkin käyttämiseen ja pakollisiin parametriin. Jos jokin niistä puuttuu tai on ilmoitettu väärin, et voi suorittaa koodiasi.

Esimerkiksi seuraavan koodin sijasta

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

Sinun on suoritettava se nimellä

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

Varmista myös, että suoritat komennot / shell-komentosarjat oikein, jos se kattaa useita rivejä.

Parametrityypin takia kaksinkertaiset lainausmerkit ovat välttämättömiä. Lisätila voi myös pilata koodisi ja pakottaa virheilmoituksen. Varmista, että tarkistat suorittamasi komennon viralliset asiakirjat ja katso, onko siellä ongelmia.

Ratkaisu 2: Vianmääritys shell-komentosarjasta

Jos käytät komentosarjan komentosarjaa, joka toimii lähdejärjestelmässä, mutta palauttaa kohteen virheen, voit suorittaa komentosarjan vianmäärityksen tarkistamalla suorituksen aikana tallennetut muuttujat ja nähdäksesi sitten, mikä aiheuttaa ongelman. Tämä on hyvin yleinen syy, koska useissa tapauksissa kuori yrittää tulkita tulostamatonta merkkiä.

Kokeile suorittaa kuori parametrilla 'vx'. Tämä näyttää meille, mitä komentoja ajetaan ja mitkä arvot tallennetaan komentosarjaan. Täällä voit vianmääritys ja diagnosoida, mikä menee pieleen.

Suorita esimerkiksi komentosarja terminaalissa sen jälkeen, kun olet lisännyt 'vx':

 # sh -vx ./test_script5.sh 

Voit tarkistaa komentosarjan sisällön 'kissa' -komennolla seuraavasti:

 # kissa test_script5.sh 

Ratkaisu 3: Käytä 'dos2unix.exe' -komentoa

Windows / DOS-tekstitiedostoissa uusi rivi on yhdistelmä kuljetuspalautusta (\ r), jota seuraa rivinsyöttö (\ n). Macissa (ennen Mac OS X) rivinvaihdolla käytettiin yksinkertaista kuljetuspalautusta (rr). Unix / Linux ja Mac OS X käyttävät Line Feed (\ n) -rivinvaihtoja. Jos käytät Cygwiniä, se ei pysty käsittelemään DOS / Windows ja vanhemmat Mac-ohjelmat tekemiä skriptejä ylimääräisen Carriage Return () -merkin vuoksi.

Käytä 'dos2unix.exe' -komentoa

Täällä voit tehdä 'dos2unix.exe' -komennon, joka muuntaa skriptin oikeaan muotoon ja voi sitten suorittaa sen ilman mitään ongelmia.

Lopuksi, sinun on tutkittava komennot ja käyttämäsi alustatyyppi ja varmistettava, että siinä ei ole eroja. Koska emme pysty kattamaan kaikkia mahdollisuuksia, sinulla olisi idea, millaisia ​​virheitä voi tapahtua ja kuinka korjata ne.

Mielenkiintoisia Artikkeleita