Soluție: eroare de sintaxă aproape de simbolul neașteptat `('

Eroarea de sintaxă a mesajului de eroare aproape de un simbol neașteptat `(' apare într-un mediu de tip Unix, Cygwin și în interfața liniei de comandă din Windows. Această eroare va fi probabil declanșată 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.

Sintaxă eroare aproape jeton neașteptat `('

Acest mesaj de eroare iese la suprafață și când introduceți comenzi în linia de comandă Linux pentru sarcini cotidiene, cum ar fi copierea manuală a fișierelor etc. coajă.

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

Motivele acestui mesaj de eroare sunt foarte diverse și nu pot fi enumerate într-un articol, deoarece există mii de posibilități de sintaxă care greșesc atunci când executați comenzi. Motivele principale ale acestei erori sunt:

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

În acest articol, presupunem că știți elementele de bază ale codării și aveți o idee despre ceea ce faceți. Dacă sunteți începători, cel mai bine este să urmați tutorialele aprofundate ale limbii / comenzii pe care încercați să le executați. Probabil ați făcut o greșeală de o anumită sintaxă.

Soluția 1: Verificarea sintaxei și a formatului comenzilor

Primul și cel mai important motiv pentru care ați putea întâmpina acest mesaj de eroare este cel al sintaxei incorecte din codul dvs. sau nu urmăriți formatul exact al comenzilor. Fiecare comandă are un format predefinit pe care îl puteți vedea în documentația sa. Câțiva parametri sunt opționali, iar alții sunt obligatorii.

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

De exemplu, în loc de codul următor

 [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ă vă executați corect comenzile / scriptul shell dacă se întinde pe mai multe linii.

Din cauza tipului de parametru, sunt necesare ghilimelele duble. De asemenea, un spațiu suplimentar vă poate strica codul și va forța 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 dvs. 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, coaja încearcă să interpreteze un personaj neimprimabil.

Încercați să rulați shell-ul cu parametrul „vx”. Aceasta ne va arăta ce comenzi se execută ș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 ați inclus „vx” ca:

 # sh -vx ./test_script5.sh 

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

 # cat test_script5.sh 

Soluția 3: Folosind comanda 'dos2unix.exe'

În fișierele de text Windows / DOS, o nouă linie este o combinație de un Return Carriage (\ r) urmat de un Feed Line (\ n). În Mac (înainte de Mac OS X), o pauză de linie folosea o simplă Returnare a căruței (\ r). Unix / Linux și Mac OS X folosesc pauze de linie Feed (\ n). Dacă utilizați Cygwin, procesarea scripturilor făcute de DOS / Windows și Mac mai vechi nu va reuși din cauza caracterului suplimentar Return 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.

Pentru a încheia, trebuie să cercetați comenzile și tipul de platformă pe care îl utilizați și asigurați-vă că nu există discrepanțe. Deoarece nu putem acoperi toate posibilitățile, ai avea o idee despre ce tipuri de erori pot apărea și cum să le rezolvi.

Articole Interesante