Remediați eroarea de sintaxă Bash aproape de simbolul neașteptat

Publicat: 2022-05-30
Remediați eroarea de sintaxă Bash aproape de simbolul neașteptat

Codarea în terminalul Linux Bash a devenit o practică predominantă în sectorul de codificare. Inginerii software și studenții care învață limbajul de codificare întâmpină diverse erori. Dacă ați văzut în mod repetat erori precum Eroare de sintaxă lângă simbolul neașteptat „(” sau Eroare de sintaxă Bash lângă simbolul neașteptat, puteți încerca să vă bazați pe metodele descrise în articol și să deveniți un codificator competent. Citiți metodele descrise în articol în ordonați descris și remediați erorile din liniile de comandă din fișierul dvs.

Remediați eroarea de sintaxă Bash aproape de simbolul neașteptat

Cuprins

  • Cum să remediați eroarea de sintaxă Bash aproape de simbolul neașteptat
  • Metoda 1: Remediați manual erorile din fiecare linie de comandă
  • Pasul I: Citiți conținutul fișierului
  • Pasul II: Eliminați întreruperile de linie Windows
  • Pasul III: Setați permisiunile pentru fișierul nou creat
  • Pasul IV: Formatați codul în fișier
  • Metoda 2: Rescrie codul
  • Metoda 3: Utilizați comanda Dos2unix.exe

Cum să remediați eroarea de sintaxă Bash aproape de simbolul neașteptat

Linux Bash este un interpret de linie de comandă pentru sistemul bazat pe Linux și este un înlocuitor pentru Bourne Shell sau sh. Fișierele sunt denumite folosind formatul .sh în scriptul Linux Bash. Dacă există probleme de formatare în codul din scriptul shell, este posibil să vă confruntați cu o eroare de sintaxă. Dacă eroarea este aproape de caracterul ( , shell-ul vă va solicita eroarea în linie și va afișa eroarea în linia corespunzătoare. Deoarece Linux Bash este un interpret, linia cu eroarea vă va fi returnată în Terminal și va opri scanarea restului comenzilor din script. Prin urmare, trebuie să remediați eroarea din linia de comandă specială și să treceți la următoarea pentru a remedia eroarea neașteptată a simbolului din scriptul shell. Cauzele sintaxei erorile aproape de simbolul neașteptat din Linux Bash sunt enumerate mai jos în această secțiune, după cum urmează:

  • Codarea cu secvențe de escape - Dacă ați scris codurile în scripting Bash, secvențele de escape sau ghilimele din script pot provoca erori. Secvențele de evacuare și ghilimele trebuie scrise în formatul corect pentru a remedia eroarea.
  • Sintaxă incorectă în fișierul de codare - Sintaxa din cod poate da o eroare de sintaxă dacă comanda este scrisă într-o sintaxă greșită, cum ar fi schimbarea ordinii buclelor.
  • Utilizarea greșită a comenzii - Dacă nu utilizați comanda corect, cum ar fi atribuirea incorectă a valorii, este posibil să aveți o eroare de sintaxă.
  • Sistem de operare incompatibil în sisteme - Dacă shell-ul pentru scriptul de codare nu este compatibil între sistemele Unix și DOS, este posibil să aveți o eroare neașteptată.
  • Probleme în scriptul bash shell - Problemele care rulează în scriptul bash shell pe fișierul copiat dintr-un alt sistem pot genera eroarea neașteptată a simbolului.

Luați în considerare un fișier numit example.sh creat în scripting-ul Linux Bash cu următoarele linii de comandă în scopuri explicative. Fișierul exemplu are posibilități pentru erori de sintaxă și include toate comenzile posibile care pot fi utilizate în scriptul shell.

 str= „Prima linie de comandă a „(exemplu de fișier)” în script”
str= [(1,2),(3,4)]
dacă[ $zi == „lună” ] atunci
ecou „lună”
altfel
ecou „no mon”
fi
pentru VARIABIL în {0..2}; apoi
face echo command1; comanda eco2; comanda echo3; comanda eco4; Terminat
în timp ce adevărat; face if [ $ zi == „lună” ]; apoi ecou „mon”; else ecou „nu mon”; Terminat; fi 

exemplu de fișier cu linii de comandă în linux bash

Metoda 1: Remediați manual erorile din fiecare linie de comandă

Prima metodă de a remedia erorile este să remediați manual eroarea de sintaxă în fiecare linie de comandă din script. Pașii pentru a rezolva erorile de sintaxă în apropierea simbolului neașteptat din liniile de comandă sunt discutați în această secțiune. Procesul de remediere a erorii neașteptate de simbol în terminal este descris mai jos. Rulați fișierul în Terminal tastând comanda ./example.sh și apăsând tasta Enter .

Comanda de deschidere a fișierului example.sh. Remediați eroarea de sintaxă Bash aproape de simbolul neașteptat

2. Observați liniile care au eroarea neașteptată a simbolului în liniile de comandă din rezultatul de mai jos.

3. Remediați eroarea din fiecare linie urmând metodele discutate mai jos individual și salvând fișierul.

4. Rulați fișierul din nou după modificări și verificați dacă eroarea de sintaxă este rezolvată pe fișier.

Citește și: Cum se instalează Linux Bash Shell pe Windows 10

Pasul I: Citiți conținutul fișierului

Primul pas pentru a rezolva eroarea de sintaxă din liniile de comandă este să citiți fișierul în Terminal. DACĂ există probleme cu fișierul, este posibil să nu puteți vedea fișierul. Practica obișnuită de vizualizare a fișierului este să rulați fișierul folosind comanda ./example.sh , dar nu puteți modifica conținutul fișierului. Opțiunile de vizualizare a conținutului fișierului și de modificare a liniilor de comandă pentru a remedia eroarea de sintaxă lângă simbolul neașteptat „(” sunt discutate mai jos.

Opțiunea 1: Prin comanda CAT

Prima opțiune este să utilizați comanda cat pentru a vizualiza fișierul în scriptul shell. Citiți conținutul fișierului cu eroarea neașteptată a simbolului folosind comanda cat, tastând comanda cat –v example.sh în Terminal.

Nota 1: Exemplul.sh este folosit în scopuri explicative și trebuie să tastați numele fișierului care are eroarea neașteptată a simbolului.

Nota 2: Comanda cat –v este utilizată pentru a afișa toate caracterele invizibile care sunt susceptibile de a reprezenta întoarcerea carușului sau spațiul fără întrerupere.

exemplu.sh fișier deschide comanda cat în terminalul linux

Opțiunea 2: Prin comanda VX

Dacă nu puteți utiliza comanda cat, puteți încerca să utilizați comanda vx pentru a vizualiza și modifica comenzile din fișier, urmând pasul de mai jos. Tastați comanda sh –vx ./example.sh în Terminal pentru a deschide fișierul.

exemplu sh vx.comandă sh. Remediați eroarea de sintaxă Bash aproape de simbolul neașteptat

Opțiunea 3: Prin comanda od –a

3. Dacă există câteva caractere invizibile în liniile de comandă, puteți utiliza comanda od –a pentru a vizualiza fișierul. Dacă conținutul fișierului nu este vizibil în fișierul de cod, puteți încerca să citiți fișierul folosind comanda od –a example.sh pentru a modifica codul.

o comandă example.sh în terminalul linux

Pasul II: Eliminați întreruperile de linie Windows

Dacă există întreruperi de linie Windows în scriptul shell, puteți utiliza comenzile consolei pentru a elimina întreruperile de linie și puteți copia liniile de cod într-un fișier nou pentru a remedia eroarea.

Introduceți următoarea comandă în Terminal pentru a salva conținutul fișierului într-un alt fișier numit corectedexample.sh pentru a elimina întreruperile de linie Windows din script.

 tr –d '\r' <example.sh> corectedexample.sh 

comanda consolei pentru a elimina ruptura de linie din Windows. Remediați eroarea de sintaxă Bash aproape de simbolul neașteptat

Pasul III: Setați permisiunile pentru fișierul nou creat

Trebuie să setați permisiunea pentru fișierul nou creat pentru a edita fișierul, astfel încât fișierul să poată fi executat în shell. Tastați comanda ca chmod 755 corectedexample.sh în Terminal pentru a oferi permisiunile pentru fișier și pentru a rula fișierul. Acum puteți vizualiza fișierul corectat și puteți remedia problemele de formatare și puteți remedia eroarea de sintaxă lângă simbolul neașteptat „(” din fișier.

Comanda chmod 755 corectedexample.sh pentru a seta permisiunile în terminalul Linux

Pasul IV: Formatați codul în fișier

Al doilea pas este formatarea liniilor de cod individual și modificarea manuală a liniilor de comandă pe fișier. Opțiunile de formatare a fișierului pentru a remedia eroarea de sintaxă lângă simbolul neașteptat „(” sunt discutate mai jos în această secțiune.

Opțiunea 1: Înlocuiți ghilimele simple cu ghilimele duble

Dacă utilizați ghilimele simple în liniile de comandă, trebuie să modificați comanda înlocuind ghilimelele simple cu ghilimele duble pentru a remedia eroarea de sintaxă. În fișierul example.sh , eliminați liniile de cod care au și sau ghilimele simple în comandă și înlocuiți ghilimele simple cu ghilimele duble sau și . Aici, în fișierul exemplu, trebuie să schimbați codul ca str= „Prima linie de comandă a „\(fișier exemplu)\” în script”

Notă: Ghilimelele duble sunt necesare pentru comenzile de tip parametru, cum ar fi str= „[(1,2),(3,4)]” .

înlocuiți ghilimele simple cu ghilimele duble în fișierul example.sh bash

Citește și: Cele mai bune 20 de distribuții Linux ușoare din 2022

Opțiunea 2: Adăugați $ la liniile de șir

Dacă ați adăugat valori de șir la script, trebuie să adăugați un $ la valorile de șir pentru a remedia eroarea de sintaxă din script. Adăugați $ pentru liniile de comandă cu valorile șirului pentru a remedia eroarea neașteptată. Aici, în fișierul exemplu, schimbați linia de comandă ca;

 str= $ „Prima linie de comandă a „\(fișier exemplu)\” în script”

Notă: Dacă utilizați $ în valoarea șirului, puteți ocoli secvența de escape backslash deoarece liniile de comandă sunt decodificate de standardul ANSI C. Cu alte cuvinte, folosind un $ pentru valoarea șirului, puteți evita folosirea ghilimelelor duble în loc de ghilimele simple din liniile de comandă.

semnul dolarului în liniile de șir. Remediați eroarea de sintaxă Bash aproape de simbolul neașteptat

Opțiunea 3: Convertiți filele în spații

Spațiile pe care le-ați lăsat între două instrucțiuni din comandă trebuie să fie spații în loc de tab-uri pentru a remedia eroarea de sintaxă din script. Dacă primiți eroarea pe Cygwin, puteți încerca să convertiți filele din coduri în spații pentru a remedia eroarea. Linia de comandă este dată mai jos ca;

 face echo command1; comanda eco2; comanda echo3; comanda eco4; Terminat 

file utilizate în comanda do echo în fișierul example.sh bash

Comanda de mai sus ar trebui rescrisă așa cum se arată mai jos pentru a remedia eroarea.

 face echo command1; comanda eco2; comanda echo3; comanda eco4; Terminat

Opțiunea 4: Utilizați caractere de evacuare

Dacă utilizați un caracter bash, este important să utilizați un caracter de escape împreună cu caracterul bash pentru a remedia eroarea de sintaxă. Parantezele sau () sunt caractere speciale bash din fișier, prin urmare, ar trebui să utilizați caracterul de evacuare sau bara oblică inversă din linia de comandă pentru a scăpa de caracterele normale pentru a executa comanda. Comanda str= 'Prima linie de comandă a \'(fișierul exemplu)\' în script' nu ar da o eroare în Terminal, deoarece sunt folosite caracterele de escape.

Citiți și: Cum să ajungeți printre noi pe Linux

Opțiunea 5: Folosiți spațiul dintre caractere

Scriptul shell recunoaște comenzile și instrucțiunile din script după valorile implicite. Trebuie să vă asigurați utilizarea corectă a spațiului dintre caractere, astfel încât shell-ul să poată identifica comanda dată în script. Spațiul este un caracter care este folosit pentru a diferenția două caractere în linia de comandă. În cod, nu există spațiu între if și [ , ceea ce dă eroarea neașteptată a simbolului, deoarece comanda if[ nu este identificată de shell. Dacă codul este schimbat în if [ $ zi == „lun” ]; atunci eroarea poate fi rezolvată ca comanda buletinului shell dacă este identificată de shell.

Opțiunea 6: Utilizați separatorul de comenzi pentru instrucțiuni

Diferitele comenzi din scriptul shell trebuie să fie separate în instrucțiuni pentru ca Terminalul să identifice comenzi individuale. Trebuie să utilizați un separator de comenzi pentru a remedia eroarea de sintaxă în Linux Bash. Instrucțiunile din comandă trebuie să fie separate printr-un separator de comandă, cum ar fi un punct și virgulă sau un ; sau o nouă linie apăsând tasta Enter . De exemplu, comanda din cod dacă [ $ zi == „lună” ] atunci trebuie modificată ca și cum [ $ zi == „lună” ]; apoi pentru a remedia eroarea. Deoarece punctul și virgulă este folosit ca separator de comandă între caracterele [ și apoi , puteți remedia această eroare.

editați comanda example.sh în fișierul bash. Remediați eroarea de sintaxă Bash aproape de simbolul neașteptat

Opțiunea 7: Eliminați declarațiile suplimentare

Uneori, este posibil să fi adăugat instrucțiuni suplimentare sau să fi amestecat codurile în cazul mai multor bucle imbricate. Trebuie să eliminați instrucțiunile suplimentare de pe liniile de comandă pentru a remedia eroarea de sintaxă în apropierea simbolului neașteptat „(” în Linux Bash. Buclele bash pentru... terminat sau și constructele de construcție dacă... fi trebuie să fie în sintaxa corectă. exemplu de fișier are o sintaxă greșită în bucla for are termenul then care este folosit în instrucțiunea if . Modificarea codului ca următorul cod va remedia eroarea neașteptată a simbolului. Declarația atunci este o instrucțiune suplimentară în cod și eliminarea termenului va remedia eroarea.

 pentru VARIABIL în {0..2}; face echo command1; comanda eco2; comanda echo3; comanda eco4; Terminat 

editarea comenzii for în fișierul example.sh bash

Opțiunea 8: Asigurați-vă că ordinea de închidere a extraselor este corectă

Dacă utilizați multe instrucțiuni de construcție imbricate sau condiționate în scriptul shell, trebuie să vă asigurați că buclele sunt închise în ordinea în care sunt deschise. Puteți folosi un nou separator de linii pentru a evita conflictele cu buclele. Ordinea de închidere a buclelor imbricate și a instrucțiunilor condiționale ar trebui să fie corectă și nu trebuie modificată. Buclele din cod sunt adevărate; face if [ $ zi == „lună” ]; apoi ecou „mon”; else ecou „nu mon”; Terminat; fi trebuie să fie închis în ordinea corectă. Modificarea codului, așa cum se arată mai jos, poate remedia eroarea neașteptată a simbolului, deoarece ordinea de închidere a declarațiilor este corectată.

 în timp ce adevărat; face if [ $ zi == „lună” ]; apoi ecou „mon”; else ecou „nu mon”; fi; Terminat 

face while comandă. Remediați eroarea de sintaxă Bash aproape de simbolul neașteptat

Citește și: Ce este un interpret de linie de comandă?

Metoda 2: Rescrie codul

Dacă ați copiat codul și l-ați lipit într-un fișier nou pe terminal, puteți încerca să rescrieți codul manual pentru a remedia eroarea. Erorile din cod pot fi remediate dacă ați scris codul fără erori de format în scriptul shell. Acest lucru se datorează faptului că caracterele ascunse și problemele de formatare din editorul de text, cum ar fi Microsoft Word, este posibil să fi folosit pentru a copia și a lipi codul, poate să fi dat eroarea.

Metoda 3: Utilizați comanda Dos2unix.exe

Dacă utilizați un sistem de operare Unix, puteți scrie coduri cu caracterul de avans de linie ca \n pentru a trece la următoarea linie din fișier. Cu toate acestea, dacă utilizați un sistem de operare Windows, trebuie să treceți la următoarea linie a codului utilizând returul de transport și avansul de linie sau \r\n din fișier. Dacă executați codul scris în sistemul de operare Windows în Cygwin, este posibil să primiți eroarea de sintaxă în apropierea simbolului neașteptat „(”.

Pentru a remedia eroarea, trebuie să ștergeți caracterele de returnare a carului folosind instrumentul de linie de comandă DOS în Unix ca convertor de format de fișier text. Tastați următoarea comandă ca dos2unix.exe example.sh în Terminal și puteți converti fișierul în format Unix.

comanda dos2unix.exe example.sh. Remediați eroarea de sintaxă Bash aproape de simbolul neașteptat

Recomandat:

  • Cum se creează un cont Telegram pe Android
  • Remediați eroarea de rulare C++ pe Windows 10
  • Cum să ștergeți permanent contul Github
  • Top 14 cele mai bune plăci grafice pentru Linux

Articolul a discutat metodele de bază pentru a remedia eroarea de sintaxă Bash în apropierea simbolului neașteptat „(” din script. Dacă utilizați un Linux Bash, puteți utiliza metodele explicate în această secțiune pentru a remedia eroarea de sintaxă Bash aproape de simbolul neașteptat. Dacă ați citit întregul articol și ați găsit conținutul ca fiind util, vă rugăm să ne transmiteți sugestiile și întrebările dvs. în secțiunea de comentarii.