Korjaa Bash-syntaksivirhe lähellä odottamatonta merkkiä
Sekalaista / / May 30, 2022
![Korjaa Bash-syntaksivirhe lähellä odottamatonta merkkiä](/f/2354f2ec9eb0c3c29d140a06e3066a5f.png)
Koodauksesta Linux Bash Terminalissa on tullut vallitseva käytäntö koodausalalla. Ohjelmistoinsinöörit ja koodauskieltä oppivat opiskelijat törmäävät erilaisiin virheisiin. Jos olet toistuvasti nähnyt virheitä, kuten syntaksivirhe lähellä odottamatonta merkkiä '(' tai Bash-syntaksivirhe lähellä odottamatonta merkkiä, voit yrittää luottaa artikkelissa kuvattuihin menetelmiin ja tulla asiantuntijaksi koodaaja. Lue artikkelissa kuvatut menetelmät kuvatussa järjestyksessä ja korjaa tiedostosi komentorivien virheet.
![Korjaa Bash-syntaksivirhe lähellä odottamatonta merkkiä](/f/2e157f68698de3d4eee628460954a7e6.png)
Sisällys
- Kuinka korjata Bash-syntaksivirhe lähellä odottamatonta merkkiä
- Tapa 1: Korjaa jokaisen komentorivin virheet manuaalisesti
- Vaihe I: Lue tiedoston sisältö
- Vaihe II: Poista Windowsin rivinvaihdot
- Vaihe III: Aseta oikeudet juuri luodulle tiedostolle
- Vaihe IV: Muotoile tiedostossa oleva koodi
- Tapa 2: Kirjoita koodi uudelleen
- Tapa 3: Käytä Dos2unix.exe-komentoa
Kuinka korjata Bash-syntaksivirhe lähellä odottamatonta merkkiä
Linux Bash on komentorivitulkki Linux-pohjaiselle järjestelmälle ja se korvaa Bourne Shellin tai sh: n. Tiedostot on nimetty .sh-muodossa Linuxissa
Lyödä käsikirjoitus. Jos komentosarjan koodissa on muotoiluongelmia, saatat kohdata syntaksivirheen. Jos virhe on lähellä ( merkkiä, komentotulkki kehottaa sinua rivin virheeseen ja näyttää virheen vastaavalla rivillä. Koska Linux Bash on tulkki, virheen sisältävä rivi palautetaan sinulle terminaalissa ja se lopettaa skriptin muiden komentojen skannauksen. Siksi sinun on korjattava virhe tietyllä komentorivillä ja siirryttävä seuraavaan korjataksesi odottamaton merkkivirhe komentotulkkikomentosarjassa. Syntaksivirheen syyt lähellä odottamatonta merkkiä Linux Bashissa on lueteltu alla tässä osiossa seuraavasti:- Koodaus escape-sekvensseillä- Jos olet kirjoittanut koodit Bash-komentosarjalla, komentosarjan pakotussekvenssit tai lainausmerkit voivat aiheuttaa virheitä. Escape-sekvenssit ja lainausmerkit on kirjoitettava oikeassa muodossa virheen korjaamiseksi.
- Väärä syntaksi koodaustiedostossa- Koodissa oleva syntaksi voi aiheuttaa syntaksivirheen, jos komento on kirjoitettu väärällä syntaksilla, kuten silmukoiden järjestyksen muuttaminen.
- komennon väärä käyttö- Jos et käytä komentoa oikein, kuten väärä arvon määrittäminen, sinulla voi olla syntaksivirhe.
- Yhteensopimaton käyttöjärjestelmä järjestelmissä- Jos koodauskomentosarjan kuori ei ole yhteensopiva Unix- ja DOS-järjestelmien välillä, sinulla voi olla odottamaton virhe.
- Ongelmia bash shell -skriptissä- Toisesta järjestelmästä kopioidun tiedoston bash shell -skriptissä suoritettavat ongelmat voivat aiheuttaa odottamattoman merkkivirheen.
Harkitse tiedostoa nimeltä esimerkki.sh luotu Linux Bash -komentosarjassa seuraavilla komentoriveillä selitystarkoituksessa. Esimerkkitiedostossa on mahdollisuus syntaksivirheisiin ja se sisältää kaikki mahdolliset komentotulkkikomentosarjassa käytettävät komennot.
str= 'Ensimmäinen komentorivi "(esimerkkitiedosto)" komentosarjassa'str= [(1,2),(3,4)]jos[ $day == "ma" ] sitten kaiku "mon"muu echo "ei mon"fimuuttujalle 0..2}; sittentee kaiku komento1; kaiku komento2; kaiku komento3; kaiku komento4; tehtyvaikka totta; do if [ $ päivä == "ma" ]; sitten kaiku "mon"; else echo "ei mon"; tehty; fi
![esimerkkitiedosto komentoriveillä linux bashissa](/f/344e7f952af898601d5d35c319efb1ef.png)
Tapa 1: Korjaa jokaisen komentorivin virheet manuaalisesti
Ensimmäinen tapa korjata virheet on korjata syntaksivirhe manuaalisesti jokaisella skriptin komentorivillä. Tässä osiossa käsitellään vaiheita komentorivien lähellä olevien odottamattomien merkkien syntaksivirheiden ratkaisemiseksi. Prosessi päätteen odottamattoman merkkivirheen korjaamiseksi on kuvattu alla. Suorita tiedosto kohteessa Terminaali kirjoittamalla ./example.sh komento ja painamalla Tulla sisäänavain.
![example.sh-tiedoston avaamiskomento. Korjaa Bash-syntaksivirhe lähellä odottamatonta merkkiä](/f/eb83f5a3f3513627738ad7508e25bfa0.png)
2. Huomaa rivit joissa on odottamaton merkkivirhe alla olevan tuloksen komentorivillä.
3. Korjaa virhe jokaisella rivillä seuraamalla alla kuvattuja menetelmiä erikseen ja tallentaa tiedosto.
4. Juosta tiedosto uudelleen muutosten jälkeen ja tarkista, onko syntaksivirhe korjattu tiedostossa.
Lue myös:Kuinka asentaa Linux Bash Shell Windows 10:een
Vaihe I: Lue tiedoston sisältö
Ensimmäinen askel komentorivien syntaksivirheen ratkaisemiseksi on lukea tiedosto päätteessä. JOS tiedostossa on ongelmia, et ehkä voi tarkastella tiedostoa. Tavallinen käytäntö tiedoston katselussa on ajaa tiedosto komennolla ./example.sh mutta et voi muokata tiedoston sisältöä. Vaihtoehdot, joilla voit tarkastella tiedoston sisältöä ja muokata komentoriviä korjataksesi syntaksivirheen lähellä odottamatonta merkkiä '(', käsitellään alla.
Vaihtoehto 1: CAT-komennon kautta
Ensimmäinen vaihtoehto on käyttää kissa -komento näyttääksesi tiedoston shell-skriptissä. Lue odottamattoman merkkivirheen sisältävän tiedoston sisältö cat-komennolla kirjoittamalla komento cat –v esimerkki.sh terminaalissa.
Huomautus 1: The esimerkki.sh käytetään selittäviin tarkoituksiin, ja sinun on kirjoitettava sen tiedoston nimi, jossa on odottamaton merkkivirhe.
Muistio 2: Cat –v-komentoa käytetään näyttämään kaikki näkymätön merkit, jotka todennäköisesti edustavat vaunun palautusta tai välilyöntiä.
![example.sh-tiedosto avaa cat-komento Linux-päätteessä](/f/9ceb27a4b15da3c8d9855d115a083953.png)
Vaihtoehto 2: VX-komennon kautta
Jos et voi käyttää cat-komentoa, voit kokeilla vx-komentoa tarkastellaksesi ja muuttaaksesi tiedoston komentoja alla olevan vaiheen avulla. Kirjoita sh –vx ./example.sh -komento terminaalissa avataksesi tiedoston.
![sh vx esimerkki.sh -komento. Korjaa Bash-syntaksivirhe lähellä odottamatonta merkkiä](/f/ed772d3d5b9a6520718a93456b1da40e.png)
Vaihtoehto 3: od –a-komennon kautta
3. Jos komentorivillä on muutamia näkymättömiä merkkejä, voit tarkastella tiedostoa komennolla od –a. Jos tiedoston sisältö ei näy kooditiedostossa, voit yrittää lukea tiedoston komennolla od – esimerkki.sh koodin muokkaamiseen.
![od esimerkki.sh-komento linux-päätteessä](/f/eeccd3252d58d02a2348dbe03685840b.png)
Vaihe II: Poista Windowsin rivinvaihdot
Jos komentotulkkikomentosarjassa on Windowsin rivinvaihtoja, voit poistaa rivinvaihdot konsolin komentojen avulla ja korjata virheen kopioimalla koodirivit uuteen tiedostoon.
Kirjoita seuraava komento terminaaliin tallentaaksesi tiedoston sisällön toiseen nimettyyn tiedostoon korjattu esimerkki.sh poistaaksesi Windowsin rivinvaihdot skriptistä.
tr -d '\r'korjattu esimerkki.sh
![konsolin komento poistaa Windowsin rivinvaihto. Korjaa Bash-syntaksivirhe lähellä odottamatonta merkkiä](/f/4189da3a683faf469f5b3d1b8c9d4a70.png)
Vaihe III: Aseta oikeudet juuri luodulle tiedostolle
Sinun on asetettava äskettäin luodulle tiedostolle lupa muokata tiedostoa, jotta tiedosto voidaan suorittaa komentotulkissa. Kirjoita komento nimellä chmod 755 korjattu esimerkki.sh terminaalissa antaaksesi tiedoston käyttöoikeudet ja suorittaaksesi tiedoston. Nyt voit tarkastella korjattua tiedostoa ja korjata muotoiluongelmat sekä korjata syntaksivirheen lähellä odottamatonta merkkiä '(' tiedostossa.
![chmod 755 correctedexample.sh -komento asettaa käyttöoikeudet linux-päätteessä](/f/c24a2acb4404215bee3be626386b905c.png)
Vaihe IV: Muotoile tiedostossa oleva koodi
Toinen vaihe on muotoilla koodirivit yksitellen ja muuttaa komentoriviä manuaalisesti tiedostossa. Vaihtoehtoja tiedoston alustamiseksi odottamattoman tunnuksen '(' lähellä olevan syntaksivirheen korjaamiseksi käsitellään alla tässä osiossa.
Vaihtoehto 1: Korvaa yksittäiset lainaukset kaksoislainauksilla
Jos käytät yksittäisiä lainausmerkkejä komentoriveillä, sinun on muutettava komentoa korvaamalla lainausmerkki kaksoislainausmerkeillä syntaksivirheen korjaamiseksi. Vuonna esimerkki.sh tiedosto, poista koodirivit, joilla on ‘ ja ’ tai yksittäisiä lainauksia komennossa ja korvaa yksittäiset lainausmerkit kaksoislainausmerkit tai “ ja ’’. Tässä, esimerkkitiedostossa, sinun on vaihdettava koodi nimellä str= "Ensimmäinen komentorivi "\(esimerkkitiedosto)\" komentosarjassa"
merkintä: Lainausmerkit ovat välttämättömiä parametrityyppisille komentoille, kuten str= "[(1,2),(3,4)]".
![korvaa lainausmerkit kaksoislainausmerkeillä example.sh bash-tiedostossa](/f/d1843275f7639d3715f78f682a77378f.png)
Lue myös:20 parasta kevyttä Linux-distroa vuonna 2022
Vaihtoehto 2: Lisää $ merkkijonoihin
Jos olet lisännyt komentosarjaan merkkijonoarvoja, sinun on lisättävä merkkijonoarvoihin $, jotta voit korjata skriptin syntaksivirheen. Lisää $ komentoriville merkkijono arvot korjaamaan odottamattoman virheen. Muuta tässä esimerkkitiedostossa komentorivi nimellä;
str= $ 'Ensimmäinen komentorivi '\(esimerkkitiedosto)\' komentosarjassa'
merkintä: Jos käytät $ merkkijonoarvossa voit ohittaa kenoviivan poistosekvenssin, koska komentorivit dekoodataan ANSI C -standardilla. Toisin sanoen, käyttämällä merkkijonoarvoa $, voit välttää lainausmerkkien käyttämisen komentorivien yksittäisten lainausmerkkien sijaan.
![dollarin merkki merkkijonoissa. Korjaa Bash-syntaksivirhe lähellä odottamatonta merkkiä](/f/0817bde26be03406189a6bd9b2df3988.png)
Vaihtoehto 3: Muunna sarkaimet välilyönneiksi
Välilyöntien, jotka olet jättänyt kahden komennon käskyn väliin, on oltava välilyöntejä sarkaimien sijaan komentosarjan syntaksivirheen korjaamiseksi. Jos saat virheilmoituksen Cygwinissä, voit yrittää muuntaa koodien sarkaimet välilyönneiksi korjataksesi virheen. Komentorivi annetaan alla muodossa;
tee kaiku komento1; kaiku komento2; kaiku komento3; kaiku komento4; tehty
![välilehdet, joita käytetään do echo -komennossa example.sh bash-tiedostossa](/f/0d45254ce6363b1fda45a7e3d93fe1f2.png)
Yllä oleva komento tulee kirjoittaa uudelleen alla kuvatulla tavalla virheen korjaamiseksi.
tee kaiku komento1; kaiku komento2; kaiku komento3; kaiku komento4; tehty
Vaihtoehto 4: Käytä Escape-merkkejä
Jos käytät bash-merkkiä, on tärkeää käyttää pakomerkkiä bash-merkin kanssa syntaksivirheen korjaamiseksi. The suluissa tai () ovat bash-erikoismerkkejä tiedostossa, joten sinun on käytettävä escape-merkkiä tai kenoviiva komentorivillä pakottaaksesi normaalit merkit komennon suorittamiseksi. The str= "Ensimmäinen komentorivi \"(esimerkkitiedosto)\" komentosarjassa" komento ei antaisi virhettä terminaaliin, koska käytetään estomerkkiä.
Lue myös: Kuinka päästä joukkoomme Linuxissa
Vaihtoehto 5: Käytä välilyöntiä merkkien välillä
Shell-skripti tunnistaa komentosarjan komennot ja käskyt oletusarvoilla. Sinun on varmistettava merkkien välisen tilan oikea käyttö, jotta komentotulkki voi tunnistaa skriptissä annetun komennon. Välilyönti on merkki, jota käytetään erottamaan kaksi merkkiä komentorivillä. Koodissa ei ole välilyöntiä välissä jos ja [, joka antaa odottamattoman merkkivirheen muodossa jos[ komentotulkki ei tunnista komentoa. Jos koodi muutetaan jos [ $ päivä == "ma" ]; niin virhe voidaan ratkaista shell bulletin -komennolla jos tunnistetaan kuoresta.
Vaihtoehto 6: Käytä komentojen erotinta lausekkeissa
Shell-skriptin eri komennot on erotettava lauseiksi, jotta pääte voi tunnistaa yksittäiset komennot. Sinun on käytettävä komentojen erotinta korjataksesi syntaksivirhe Linux Bashissa. Komennon lauseet on erotettava komennon erottimella, kuten puolipisteellä tai a ; tai uusi rivi painamalla Tulla sisään avain. Esimerkiksi koodissa oleva komento jos [ $ päivä == "ma" ] sitten on muutettava muotoon jos [ $ päivä == "ma" ]; sitten korjaamaan virheen. Koska puolipistettä käytetään komentojen erottimena merkkien välillä [ ja sitten, voit korjata tämän virheen.
![muokkaa example.sh-komentoa bash-tiedostossa. Korjaa Bash-syntaksivirhe lähellä odottamatonta merkkiä](/f/b15f316943e7bcadc70a7438e4541261.png)
Vaihtoehto 7: Poista lisälausunnot
Joskus olet ehkä lisännyt lisälauseita tai sekoittunut koodit useiden sisäkkäisten silmukoiden tapauksessa. Sinun on poistettava ylimääräiset lausekkeet komentoriviltä korjataksesi syntaksivirheen lähellä odottamatonta merkkiä '(' Linux Bashissa. Bash-silmukat varten… tehty tai ja rakennusrakenteet jos… fi on oltava oikeassa syntaksissa. Esimerkkitiedostossa on väärä syntaksi varten silmukassa on termi sitten jota käytetään jos lausunto. Koodin muuttaminen seuraavaksi koodiksi korjaa odottamattoman merkkivirheen. Lausunto sitten on lisälauseke koodissa ja termin poistaminen korjaa virheen.
muuttujalle 0..2}; tee kaiku komento1; kaiku komento2; kaiku komento3; kaiku komento4; tehty
![muokkaa for-komentoa example.sh bash-tiedostossa](/f/09f0a51ef4558250313a51dc7e1c714c.png)
Vaihtoehto 8: Varmista, että tiliotteiden sulkemisjärjestys on oikea
Jos käytät useita sisäkkäisiä tai ehdollisia rakennelauseita shell-skriptissä, sinun on varmistettava, että silmukat suljetaan siinä järjestyksessä, jossa ne avataan. Voit käyttää uutta rivierotinta välttääksesi ristiriidat silmukoiden kanssa. Sisäkkäisten silmukoiden ja ehdollisten lausekkeiden sulkemisjärjestyksen tulee olla oikea, eikä sitä saa muuttaa. Koodissa olevat silmukat vaikka totta; do if [ $ päivä == "ma" ]; sitten kaiku "mon"; else echo "ei mon"; tehty; fi on suljettava oikeassa järjestyksessä. Koodin muuttaminen alla esitetyllä tavalla voi korjata odottamattoman merkkivirheen, kun lausekkeiden sulkemisjärjestys korjataan.
vaikka totta; do if [ $ päivä == "ma" ]; sitten kaiku "mon"; else echo "ei mon"; fi; tehty
![tee käskyn aikana. Korjaa Bash-syntaksivirhe lähellä odottamatonta merkkiä](/f/06ce0c213abb15c053f52ccdce91cbb1.png)
Lue myös:Mikä on komentorivilulkki?
Tapa 2: Kirjoita koodi uudelleen
Jos olet kopioinut koodin ja liittänyt sen uuteen tiedostoon päätteessä, voit yrittää korjata virheen kirjoittamalla koodin uudelleen manuaalisesti. Koodissa olevat virheet voidaan korjata, jos olet kirjoittanut koodin ilman muotoiluvirheitä shell-skriptissä. Tämä johtuu siitä, että piilotetut merkit ja muotoiluongelmat tekstieditorissa, kuten Microsoft Wordissa, joita olet saattanut käyttää koodin kopioimiseen ja liittämiseen, ovat saattaneet aiheuttaa virheen.
Tapa 3: Käytä Dos2unix.exe-komentoa
Jos käytät Unix-käyttöjärjestelmää, voit kirjoittaa koodeja rivinvaihtomerkillä nimellä \n siirtyäksesi tiedoston seuraavalle riville. Jos kuitenkin käytät Windows-käyttöjärjestelmää, sinun on siirryttävä koodin seuraavalle riville käyttämällä rivinvaihtoa ja rivinvaihtoa tai \r\n tiedostossa. Jos suoritat Windows-käyttöjärjestelmässä kirjoitetun koodin Cygwinissä, saatat saada syntaksivirheen lähellä odottamatonta merkkiä '('.
Korjaaksesi virheen, sinun on tyhjennettävä rivinvaihtomerkit käyttämällä DOS: sta Unixiin komentorivityökalu tekstitiedostomuodon muuntimena. Kirjoita seuraava komento nimellä dos2unix.exe example.sh Päätteessä ja voit muuntaa tiedoston Unix-muotoon.
![dos2unix.exe example.sh-komento. Korjaa Bash-syntaksivirhe lähellä odottamatonta merkkiä](/f/d5fbbb36fde3491200cea82d465ff68a.png)
Suositus:
- Kuinka luoda Telegram-tili Androidissa
- Korjaa Runtime Error C++ Windows 10:ssä
- Kuinka poistaa Github-tili pysyvästi
- 14 parasta näytönohjainta Linuxille
Artikkelissa on käsitelty perusmenetelmiä korjata Bash-syntaksivirhe lähellä odottamatonta merkkiä‘(’ käsikirjoituksessa. Jos käytät Linux Bashia, voit käyttää tässä osiossa selitettyjä menetelmiä korjataksesi Bash-syntaksivirheen lähellä odottamatonta merkkiä. Jos olet lukenut koko artikkelin ja koit sen sisällön hyödylliseksi, ilmoita meille ehdotuksesi ja kysymyksesi kommenttiosiossa.