Fix: Syntax Error malapit sa hindi inaasahang token `(‘



Subukan Ang Aming Instrumento Para Sa Pagtanggal Ng Mga Problema

Ang mensahe ng error error sa syntax malapit sa hindi inaasahang token `(‘ nangyayari sa isang Unix-type na kapaligiran, Cygwin, at sa command-line interface sa Windows. Ang error na ito ay malamang na ma-trigger kapag sinubukan mong magpatakbo ng isang shell script na na-edit o nilikha sa mas matandang mga system ng DOS / Windows o Mac.



Syntax Error malapit sa hindi inaasahang token `(

Syntax Error malapit sa hindi inaasahang token `(‘



Lumilitaw din ang mensahe ng error na ito kapag naglalagay ka ng mga utos sa linya ng utos ng Linux para sa pang-araw-araw na mga gawain tulad ng manu-manong pagkopya ng mga file atbp. kabibi



Ano ang sanhi ng Error ng Syntax malapit sa hindi inaasahang token `(‘?

Ang mga dahilan para sa mensahe ng error na ito ay magkakaiba at hindi maililista sa isang artikulo dahil may libu-libong mga posibilidad ng syntax na nagkakamali kapag nagpapatupad ng mga utos. Ang pangunahing mga kadahilanan para sa error na ito ay:

  • Hindi magandang syntax kapag nagpapatupad ng anumang utos sa alinmang platform. Alinman sa hindi mo ginagamit nang tama ang utos o naipasok ang maling syntax.
  • Ang shell ay hindi katugma sa pagitan ng mga system ng Unix / DOS.
  • Mayroong mga isyu sa pagpapatakbo ng bash shell script mula sa ibang mapagkukunan .

Sa artikulong ito, ipinapalagay namin na alam mo ang mga pangunahing kaalaman sa pag-coding at may ideya kung ano ang iyong ginagawa. Kung ikaw ay isang nagsisimula, pinakamahusay na sundin mo ang mga malalim na tutorial ng wika / utos na sinusubukan mong ipatupad. Marahil ay nakagawa ka ng pagkakamali ng ilang syntax.

Solusyon 1: Sinusuri ang Syntax at Format ng mga utos

Ang una at pinakamahalagang kadahilanan kung bakit maaari mong maranasan ang mensahe ng error na ito ay ang hindi magandang syntax sa iyong code o hindi mo sinusunod ang eksaktong format ng mga utos. Ang bawat utos ay may paunang natukoy na format na makikita mo sa dokumentasyon nito. Maraming mga parameter ang opsyonal na kung saan ang iba ay sapilitan.



Bukod dito, dapat pang mag-ingat sobrang espasyo , paggamit ng doble quote , at ang sapilitan kinakailangang mga parameter. Kung alinman sa mga ito ang nawawala o naideklara nang hindi wasto, hindi mo maipapatupad ang iyong code.

Halimbawa, sa halip na ang sumusunod na code

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

Kailangan mong isagawa ito bilang

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

Gayundin, tiyaking naipatutupad mo nang tama ang iyong mga command / shell script kung sumasaklaw ito ng maraming mga linya.

Dahil sa uri ng parameter, kinakailangan ang mga dobleng quote. Ang isang labis na puwang ay maaari ring masira ang iyong code at pilitin ang mensahe ng error. Siguraduhin na suriin mo ang opisyal na dokumentasyon ng utos na iyong ipinatutupad at tingnan kung mayroong problema doon.

Solusyon 2: Pag-troubleshoot sa iyong script ng shell

Kung gumagamit ng isang shell script na gumagana sa source system ngunit nagbalik ng isang error sa target, maaari mong i-troubleshoot ang script sa pamamagitan ng pag-check sa mga variable na nakaimbak sa panahon ng pagpapatupad at pagkatapos ay makita kung ano ang sanhi ng isyu. Ito ay isang napaka-karaniwang sanhi tulad ng sa maraming mga kaso, ang shell sumusubok na bigyang-kahulugan ang isang hindi nahahalata na character.

Subukang patakbuhin ang shell gamit ang parameter ng 'vx'. Ipapakita nito sa amin kung anong mga utos ang tumatakbo at kung anong mga halaga ang nakaimbak sa script. Sa pamamagitan nito maaari mong i-troubleshoot at masuri kung ano ang nangyayari.

Halimbawa, ipatupad ang script sa terminal pagkatapos isama ang 'vx' bilang:

# sh -vx ./test_script5.sh

Maaari mong suriin ang mga nilalaman ng script gamit ang 'cat' na utos bilang:

# cat test_script5.sh

Solusyon 3: Paggamit ng utos na 'dos2unix.exe'

Sa mga file ng teksto ng Windows / DOS, ang isang bagong linya ay isang kumbinasyon ng isang Carriage Return ( r) na sinusundan ng isang Line Feed ( n). Sa Mac (bago ang Mac OS X), ang isang linya ng putol ay gumamit ng isang simpleng Carmel Return ( r). Ang Unix / Linux at Mac OS X ay gumagamit ng mga linya ng Line Feed ( n) na break. Kung gumagamit ka ng Cygwin, mabibigo itong maproseso ang mga script na ginawa ng DOS / Windows at mas matandang Mac dahil sa labis na character ng Carriage Return ( r).

Gamit

Paggamit ng 'dos2unix.exe' na utos

Dito maaari kang gumawa ng 'dos2unix.exe' na utos na magko-convert sa script sa tamang format at pagkatapos ay maaari mo itong maisagawa nang walang anumang mga isyu.

Upang magwakas, kailangan mong saliksikin ang iyong mga utos at uri ng platform na iyong ginagamit at tiyaking walang anumang mga pagkakaiba. Dahil hindi namin masasaklaw ang bawat posibilidad, magkakaroon ka ng ideya kung anong mga uri ng error ang maaaring mangyari at kung paano ayusin ang mga ito.

Basahin ang 3 minuto