Remediere: eroare de sintaxă în apropierea simbolului neașteptat `(& lsquo;

Eroarea de sintaxă a mesajului de eroare aproape de simbolul neașteptat `(' apare într-un mediu de tip Unix, Cygwin și în interfața liniei de comandă din Windows. Această eroare va fi declanșată cel mai probabil atunci când încercați să rulați un script shell care a fost editat sau creat în sisteme DOS / Windows sau Mac mai vechi.

Eroare de sintaxă lângă simbolul neașteptat `('

Acest mesaj de eroare apare și atunci când introduceți comenzi în linia de comandă Linux pentru activități de zi cu zi, cum ar fi copierea manuală a fișierelor etc. coajă.

Ce cauzează eroarea de sintaxă aproape de simbolul neașteptat `('?

Motivele acestui mesaj de eroare sunt foarte diverse și nu pot fi enumerate într-un singur articol, deoarece există mii de posibilități de sintaxă care nu funcționează corect la executarea comenzilor. Motivele principale ale acestei erori sunt:

  • Sintaxă greșită la executarea oricărei comenzi pe oricare dintre platforme. Fie nu utilizați corect comanda, fie ați introdus o sintaxă greșită.
  • Shell-ul nu este compatibil între sistemele Unix / DOS.
  • Există probleme care rulează scriptul bash shell dintr- o altă sursă .

În acest articol, presupunem că cunoașteți noțiunile de bază ale codării și aveți o idee despre ceea ce faceți. Dacă sunteți începător, cel mai bine este să urmați tutoriale detaliate ale limbii / comenzii pe care încercați să o executați. Probabil că ați făcut o greșeală de o anumită sintaxă.

Soluția 1: Verificarea sintaxei și formatul comenzilor

Primul și cel mai important motiv pentru care este posibil să întâmpinați acest mesaj de eroare este acela al unei sintaxi defectuoase în cod sau dacă nu respectați formatul exact al comenzilor. Fiecare comandă are un format predefinit pe care îl puteți vedea în documentația sa. Mai mulți parametri sunt opționali, alții fiind obligatorii.

În plus, trebuie acordată o atenție sporită spațiului suplimentar , utilizarea ghilimelelor duble și parametrii obligatorii necesari. Dacă vreunul dintre ele lipsește sau a fost declarat incorect, nu veți putea să vă executați codul.

De exemplu, în loc de următorul cod

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

Trebuie să-l executați ca

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

De asemenea, asigurați-vă că executați corect comenzile / scriptul shell dacă acesta acoperă mai multe linii.

Datorită tipului de parametru, ghilimelele duble sunt necesare. Un spațiu suplimentar s-ar putea să vă distrugă codul și să forțeze mesajul de eroare. Asigurați-vă că verificați documentația oficială a comenzii pe care o executați și vedeți dacă există o problemă acolo.

Soluția 2: Depanarea scriptului shell

Dacă utilizați un script shell care funcționează în sistemul sursă, dar returnează o eroare în țintă, puteți depana scriptul verificând variabilele stocate în timpul execuției și apoi vedeți ce cauzează problema. Aceasta este o cauză foarte frecventă, deoarece în mai multe cazuri, shell-ul încearcă să interpreteze un caracter neprimabil.

Încercați să rulați shell-ul cu parametrul „vx”. Aceasta ne va arăta ce comenzi sunt executate și ce valori sunt stocate în script. Aici puteți depana și diagnostica ceea ce nu merge bine.

De exemplu, executați scriptul în terminal după ce includeți „vx” ca:

# sh -vx ./test_script5.sh

Puteți verifica conținutul scriptului folosind comanda „pisică” ca:

# cat test_script5.sh

Soluția 3: Utilizarea comenzii „dos2unix.exe”

În fișierele text Windows / DOS, o nouă linie este o combinație a unui Carriage Return (\ r) urmat de un Line Line (\ n). În Mac (înainte de Mac OS X), o întrerupere de linie folosea un Carriage Return (\ r) simplu. Unix / Linux și Mac OS X folosesc linia de linie (\ n). Dacă utilizați Cygwin, acesta nu va reuși să proceseze scripturile realizate de DOS / Windows și Mac mai vechi din cauza caracterului suplimentar Carriage Return (\ r).

Folosind comanda „dos2unix.exe”

Aici puteți face comanda „dos2unix.exe” care va converti scriptul în formatul corect și apoi îl puteți executa fără probleme.

În concluzie, aveți nevoie de cercetarea comenzilor și tipului de platformă pe care o utilizați și asigurați-vă că nu există discrepanțe. Deoarece nu putem acoperi fiecare posibilitate, ați avea o idee despre ce tipuri de erori pot apărea și cum să le remediați.