Popravite pogrešku sintakse Bash u blizini neočekivanog tokena
Miscelanea / / May 30, 2022
![Popravite pogrešku sintakse Bash u blizini neočekivanog tokena](/f/2354f2ec9eb0c3c29d140a06e3066a5f.png)
Kodiranje u Linux Bash terminalu postalo je dominantna praksa u sektoru kodiranja. Softverski inženjeri i studenti koji uče jezik kodiranja nailaze na razne pogreške. Ako ste više puta vidjeli pogreške poput sintaktičke pogreške u blizini neočekivanog tokena ‘(’ ili Bash sintaksička pogreška gotovo neočekivani token, možete se pokušati osloniti na metode opisane u članku i postati stručnjak koder. Pročitajte metode opisane u članku opisanim redoslijedom i popravite pogreške u naredbenim recima u datoteci.
![Popravite pogrešku sintakse Bash u blizini neočekivanog tokena](/f/2e157f68698de3d4eee628460954a7e6.png)
Sadržaj
- Kako popraviti grešku u sintaksi Bash u blizini neočekivanog tokena
- Metoda 1: Ručno popravite pogreške u svakom naredbenom retku
- Korak I: Pročitajte sadržaj datoteke
- Korak II: Uklonite prijelome reda u sustavu Windows
- Korak III: Postavite dopuštenja za novostvorenu datoteku
- Korak IV: Formatirajte kod u datoteci
- Metoda 2: Ponovno napišite kod
- Metoda 3: Koristite naredbu Dos2unix.exe
Kako popraviti grešku u sintaksi Bash u blizini neočekivanog tokena
Linux Bash je tumač naredbenog retka za sustav baziran na Linuxu i zamjena je za Bourne Shell ili sh. Datoteke su imenovane pomoću .sh formata u Linuxu
Bash skriptiranje. Ako postoje problemi s formatiranjem koda u skripti ljuske, možda ćete se suočiti sa sintaksičkom pogreškom. Ako je pogreška blizu ( znak, ljuska će vas uputiti na pogrešku u retku i prikazati pogrešku u odgovarajućem retku. Budući da je Linux Bash interpreter, redak s greškom bit će vam vraćen u terminalu i prestat će skenirati ostale naredbe u skripti. Stoga morate ispraviti pogrešku u određenom retku za naredbe i nastaviti na sljedeću da biste popravili neočekivanu pogrešku tokena u skripti ljuske. Uzroci sintaktičke pogreške u blizini neočekivanog tokena u Linux Bashu navedeni su u nastavku u ovom odjeljku kao u nastavku:- Kodiranje s izlaznim sekvencama- Ako ste kodove napisali u Bash skriptiranju, izlazni nizovi ili navodnici u skripti mogu uzrokovati pogreške. Izlazni nizovi i navodnici moraju biti napisani u ispravnom formatu kako bi se popravila pogreška.
- Netočna sintaksa u datoteci kodiranja- Sintaksa u kodu može dati sintaksičku pogrešku ako je naredba napisana u pogrešnoj sintaksi, kao što je promjena redoslijeda petlji.
- Pogrešna upotreba naredbe- Ako naredbu ne koristite ispravno, kao što je netočna dodjela vrijednosti, možda imate sintaksičku pogrešku.
- Nekompatibilan OS u sustavima- Ako ljuska za skriptu za kodiranje nije kompatibilna između Unix i DOS sustava, možda imate neočekivanu pogrešku.
- Problemi u skripti bash shell- Problemi koji se izvode u skripti bash shell na datoteci kopiranoj s drugog sustava mogu uzrokovati neočekivanu pogrešku tokena.
Razmotrimo datoteku pod nazivom primjer.sh kreiran u skripti Linux Bash sa sljedećim recima za naredbe u svrhu objašnjenja. Datoteka primjera ima mogućnosti za sintaktičke pogreške i uključuje sve moguće naredbe koje se mogu koristiti u shell skripti.
str= 'Prvi naredbeni redak od '(primjer datoteke)' u skripti'str= [(1,2),(3,4)]if[ $day == “pon” ] onda odjek "pon"drugo odjek "ne mon"fiza VARIABLE u {0..2}; zatimdo echo command1; naredba eho2; naredba eho3; naredba eho4; učinjenodok je istinito; učiniti ako [ $ dan == “pon” ]; zatim odjek "mon"; inače odjek "ne mon"; učinjeno; fi
![primjer datoteke s naredbenim redcima u linux bash](/f/344e7f952af898601d5d35c319efb1ef.png)
Metoda 1: Ručno popravite pogreške u svakom naredbenom retku
Prva metoda za ispravljanje pogrešaka je ručno popravljanje sintaktičke pogreške u svakom retku za naredbe u skripti. Koraci za rješavanje sintaktičkih pogrešaka u blizini neočekivanog tokena u naredbenim recima raspravljaju se u ovom odjeljku. Proces za ispravljanje neočekivane pogreške tokena na terminalu opisan je u nastavku. Pokrenite datoteku u Terminal upisivanjem ./primjer.sh naredbu i pritiskom na Unesiključ.
![primjer.sh naredba za otvaranje datoteke. Popravite pogrešku sintakse Bash u blizini neočekivanog tokena](/f/eb83f5a3f3513627738ad7508e25bfa0.png)
2. Obratite pažnju na linije koji imaju neočekivanu pogrešku tokena u naredbenim recima na donjem rezultatu.
3. Ispravite pogrešku u svakom retku slijedeći dolje navedene metode pojedinačno i spremanje Datoteka.
4. Trčanje datoteku nakon promjena i provjerite je li sintaktička pogreška riješena u datoteci.
Također pročitajte:Kako instalirati Linux Bash Shell na Windows 10
Korak I: Pročitajte sadržaj datoteke
Prvi korak u rješavanju sintaktičke pogreške u naredbenim recima je čitanje datoteke u terminalu. AKO postoje problemi s datotekom, možda nećete moći vidjeti datoteku. Uobičajena praksa pregledavanja datoteke je pokretanje datoteke pomoću naredbe ./primjer.sh ali ne možete mijenjati sadržaj u datoteci. U nastavku se raspravlja o opcijama za pregled sadržaja datoteke i izmjenu naredbenih redaka kako bi se popravila sintaktička pogreška u blizini neočekivanog tokena '(').
Opcija 1: putem CAT naredbe
Prva opcija je korištenje mačka naredba za pregled datoteke u skripti ljuske. Pročitajte sadržaj datoteke s neočekivanom pogreškom tokena pomoću naredbe cat upisivanjem naredbe mačka –v primjer.sh u Terminalu.
Napomena 1: The primjer.sh koristi se u svrhu objašnjenja i trebate upisati naziv datoteke koja ima neočekivanu pogrešku tokena.
Napomena 2: Naredba cat –v koristi se za prikaz svih nevidljivih znakova za koje je vjerojatno da će predstavljati povratni red ili razmak bez prekida.
![example.sh file open cat naredba u linux terminalu](/f/9ceb27a4b15da3c8d9855d115a083953.png)
Opcija 2: putem VX naredbe
Ako ne možete koristiti naredbu cat, možete pokušati koristiti naredbu vx za pregled i izmjenu naredbi u datoteci koristeći korak dat u nastavku. Upišite sh –vx ./primjer.sh naredbu u terminalu za otvaranje datoteke.
![sh vx primjer.sh naredba. Popravite pogrešku sintakse Bash u blizini neočekivanog tokena](/f/ed772d3d5b9a6520718a93456b1da40e.png)
Opcija 3: putem od –a naredbe
3. Ako postoji nekoliko nevidljivih znakova u naredbenim recima, možete koristiti naredbu od –a za pregled datoteke. Ako sadržaj datoteke nije vidljiv u datoteci koda, možete pokušati pročitati datoteku pomoću naredbe od –primjer.š za izmjenu koda.
![od primjera.sh naredbe u linux terminalu](/f/eeccd3252d58d02a2348dbe03685840b.png)
Korak II: Uklonite prijelome reda u sustavu Windows
Ako u skripti ljuske postoje prijelomi redaka sustava Windows, možete koristiti naredbe konzole da uklonite prijelome redaka i kopirate retke koda u novu datoteku kako biste ispravili pogrešku.
Unesite sljedeću naredbu u Terminal za spremanje sadržaja u datoteci u drugu datoteku pod nazivom ispravljenprimjer.sh za uklanjanje prijeloma Windows reda u skripti.
tr –d ‘\r’ispravljenprimjer.sh
![naredba konzole za uklanjanje prijeloma retka sustava Windows. Popravite pogrešku sintakse Bash u blizini neočekivanog tokena](/f/4189da3a683faf469f5b3d1b8c9d4a70.png)
Korak III: Postavite dopuštenja za novostvorenu datoteku
Morate postaviti dopuštenje za novostvorenu datoteku za uređivanje datoteke tako da se datoteka može izvršiti u ljusci. Upišite naredbu kao chmod 755 ispravljenprimjer.sh u terminalu da biste dali dopuštenja za datoteku i pokrenuli datoteku. Sada možete pogledati ispravljenu datoteku i riješiti probleme s formatiranjem i popraviti sintaktičku pogrešku u blizini neočekivanog tokena ‘(’ u datoteci.
![chmod 755 correctedexample.sh naredba za postavljanje dopuštenja u linux terminalu](/f/c24a2acb4404215bee3be626386b905c.png)
Korak IV: Formatirajte kod u datoteci
Drugi korak je pojedinačno formatiranje redaka koda i ručno mijenjanje naredbenih retka u datoteci. Opcije za formatiranje datoteke kako bi se popravila sintaktička pogreška u blizini neočekivanog tokena ‘(’) raspravlja se u nastavku u ovom odjeljku.
Opcija 1: Zamijenite jednostruke navodnike dvostrukim navodnicima
Ako koristite jednostruke navodnike u recima za naredbe, morate izmijeniti naredbu zamjenom jednostrukih navodnika dvostrukim navodnicima kako biste ispravili sintaktičku pogrešku. U primjer.sh datoteku, uklonite retke koda koji imaju ‘ i ’ ili jednostruki navodnici u naredbi i zamijenite jednostruke navodnike s dvostruki navodnici ili “ i ’’. Ovdje, u datoteci primjera, trebate promijeniti kod kao str= "Prvi naredbeni redak od "\(primjer datoteke)\" u skripti"
Bilješka: Dvostruki navodnici su neophodni za naredbe tipa parametra kao što su str= “[(1,2),(3,4)]”.
![zamijenite jednostruke navodnike dvostrukim navodnicima u bash datoteci example.sh](/f/d1843275f7639d3715f78f682a77378f.png)
Također pročitajte:20 najboljih lakih Linux distribucija 2022
Opcija 2: Dodajte $ u nizove
Ako ste skripti dodali vrijednosti niza, trebate dodati $ u vrijednosti niza kako biste ispravili sintaktičku pogrešku u skripti. Dodajte $ za naredbene retke s niz vrijednosti za ispravljanje neočekivane pogreške. Ovdje, u datoteci primjera, promijenite naredbeni redak kao;
str= $ 'Prvi naredbeni redak od '\(primjer datoteke)\' u skripti'
Bilješka: Ako koristite $ u vrijednosti stringa, možete zaobići bijeg slijed obrnute kose crte jer su naredbene linije dekodirane ANSI C standardom. Drugim riječima, korištenjem $ za vrijednost niza, možete izbjeći korištenje dvostrukih navodnika umjesto jednostrukih navodnika u naredbenim recima.
![znak dolara u nizovima. Popravite pogrešku sintakse Bash u blizini neočekivanog tokena](/f/0817bde26be03406189a6bd9b2df3988.png)
Opcija 3: Pretvorite tabulatore u razmake
Razmaci koje ste ostavili između dva izraza u naredbi moraju biti razmaci umjesto tabulatora kako bi se popravila sintaktička pogreška u skripti. Ako dobijete pogrešku na Cygwinu, možete pokušati pretvoriti kartice u kodovima u razmake da biste ispravili pogrešku. Naredbena linija je navedena u nastavku kao;
do echo command1; naredba eho2; naredba eho3; naredba eho4; učinjeno
![kartice koje se koriste u naredbi do echo u bash datoteci example.sh](/f/0d45254ce6363b1fda45a7e3d93fe1f2.png)
Gornju naredbu treba ponovno napisati kako je prikazano u nastavku kako bi se popravila pogreška.
do echo command1; naredba eho2; naredba eho3; naredba eho4; učinjeno
Opcija 4: Koristite znakove za bijeg
Ako koristite bash znak, važno je koristiti escape znak zajedno s bash znakom da popravite sintaktičku pogrešku. The zagrade ili () su bash posebni znakovi u datoteci, stoga biste trebali koristiti escape znak ili obrnuta kosa crta u naredbenom retku kako biste izbjegli normalne znakove za izvršenje naredbe. The str= 'Prvi naredbeni redak \'(primjer datoteke)\' u skripti' naredba ne bi dala pogrešku u terminalu jer se koristi escape znak.
Također pročitajte: Kako doći među nas na Linuxu
Opcija 5: Koristite razmak između znakova
Skripta ljuske prepoznaje naredbe i izjave u skripti prema zadanim vrijednostima. Morate osigurati ispravnu upotrebu prostora između znakova kako bi ljuska mogla identificirati naredbu danu u skripti. Razmak je znak koji se koristi za razlikovanje dva znaka u naredbenom retku. U kodu nema razmaka između ako i [, što daje neočekivanu pogrešku tokena kao ako[ naredba nije identificirana ljuskom. Ako se kod promijeni u ako [ $ dan == “pon” ]; tada se greška može riješiti kao naredba ljuske biltena ako identificira se po ljusci.
Opcija 6: Koristite separator naredbi za izjave
Različite naredbe u skripti ljuske moraju se razdvojiti u naredbe kako bi Terminal identificirao pojedinačne naredbe. Morate koristiti separator naredbi da popravite sintaktičku pogrešku u Linux Bashu. Izjave u naredbi moraju biti odvojene separatorom naredbe kao što je točka-zarez ili a ; ili novi red pritiskom na Unesi ključ. Na primjer, naredba u kodu ako je [ $ dan == “pon” ] tada mora se mijenjati kao ako [ $ dan == “pon” ]; zatim da popravi grešku. Budući da se točka-zarez koristi kao razdjelnik naredbi između znakova [ i zatim, možete popraviti ovu pogrešku.
![uredite naredbu example.sh u bash datoteci. Popravite pogrešku sintakse Bash u blizini neočekivanog tokena](/f/b15f316943e7bcadc70a7438e4541261.png)
Opcija 7: Uklonite dodatne izjave
Ponekad ste možda dodali dodatne izraze ili ste pomiješali kodove u slučaju više ugniježđenih petlji. Morate ukloniti dodatne naredbe u recima za naredbe da popravite sintaktičku pogrešku u blizini neočekivanog tokena ‘(’ u Linux Bash. Bash petlje za… gotovo ili i konstrukcijske konstrukcije ako… fi mora biti u ispravnoj sintaksi. Datoteka primjera ima pogrešnu sintaksu u za petlja ima izraz zatim koji se koristi u ako izjava. Izmjenom koda kao sljedećeg koda ispravit će se neočekivana pogreška tokena. Izjava zatim je dodatna izjava u kodu i uklanjanjem pojma ispravit će se pogreška.
za VARIABLE u {0..2}; do echo command1; naredba eho2; naredba eho3; naredba eho4; učinjeno
![uređivanje naredbe for u bash datoteci example.sh](/f/09f0a51ef4558250313a51dc7e1c714c.png)
Opcija 8: Osigurajte da je redoslijed zatvaranja izjava ispravan
Ako koristite mnogo ugniježđenih ili uvjetnih konstrukcijskih izraza u skripti ljuske, morate osigurati da su petlje zatvorene redoslijedom kojim se otvaraju. Možete koristiti novi separator redaka kako biste izbjegli sukobe s petljama. Redoslijed zatvaranja ugniježđenih petlji i uvjetnih izraza trebao bi biti ispravan i ne smije se mijenjati. Petlje u kodu dok je istinito; učiniti ako [ $ dan == “pon” ]; zatim odjek "mon"; inače odjek "ne mon"; učinjeno; fi treba zatvoriti ispravnim redoslijedom. Promjena koda kao što je prikazano u nastavku može popraviti neočekivanu pogrešku tokena jer se ispravlja redoslijed zatvaranja izraza.
dok je istinito; učiniti ako [ $ dan == “pon” ]; zatim odjek "mon"; inače odjek "ne mon"; fi; učinjeno
![do while command. Popravite pogrešku sintakse Bash u blizini neočekivanog tokena](/f/06ce0c213abb15c053f52ccdce91cbb1.png)
Također pročitajte:Što je tumač naredbenog retka?
Metoda 2: Ponovno napišite kod
Ako ste kopirali kod i zalijepili ga u novu datoteku na terminalu, možete pokušati ručno prepisati kod kako biste ispravili pogrešku. Pogreške u kodu se mogu popraviti ako ste kod napisali bez ikakvih grešaka u formatu u shell skripti. To je zato što su skriveni znakovi i problemi s oblikovanjem u uređivaču teksta kao što je Microsoft Word, koje ste možda koristili za kopiranje i lijepljenje koda, možda doveli do pogreške.
Metoda 3: Koristite naredbu Dos2unix.exe
Ako koristite Unix operativni sustav, možete pisati kodove sa znakom za pomicanje reda kao \n za prelazak na sljedeći redak u datoteci. Međutim, ako koristite operacijski sustav Windows, morate prijeći na sljedeći redak u kodu pomoću povratne linije i prijelaza reda ili \r\n u datoteci. Ako izvršite kod napisan u Windows OS-u u Cygwinu, možete dobiti sintaktičku pogrešku blizu neočekivanog tokena '('.
Da biste ispravili pogrešku, trebate obrisati znakove povrata nositelja pomoću DOS na Unix alat naredbenog retka kao pretvarač formata tekstualne datoteke. Upišite sljedeću naredbu kao dos2unix.exe example.sh u terminalu i možete pretvoriti datoteku u Unix format.
![naredba dos2unix.exe example.sh. Popravite pogrešku sintakse Bash u blizini neočekivanog tokena](/f/d5fbbb36fde3491200cea82d465ff68a.png)
Preporučeno:
- Kako stvoriti Telegram račun na Androidu
- Popravite pogrešku tijekom izvođenja C++ u sustavu Windows 10
- Kako trajno izbrisati Github račun
- Top 14 najboljih grafičkih kartica za Linux
U članku se raspravljalo o osnovnim metodama popravljanja Pogreška u sintaksi Bash blizu neočekivanog tokena‘(’ u scenariju. Ako koristite Linux Bash, možete koristiti metode objašnjene u ovom odjeljku da popravite grešku u sintaksi Bash blizu neočekivanog tokena. Ako ste pročitali cijeli članak i smatrali da je sadržaj koristan, javite nam svoje prijedloge i upite u odjeljku za komentare.