Oprava: Chyba syntaxe poblíž neočekávaného tokenu `('

Chyba syntaxe chybové zprávy poblíž neočekávaného tokenu `('se vyskytuje v prostředí typu Unix, Cygwin a v rozhraní příkazového řádku ve Windows. Tato chyba se pravděpodobně spustí při pokusu o spuštění skriptu shellu, který byl upraven nebo vytvořen ve starších systémech DOS / Windows nebo Mac.

Chyba syntaxe poblíž neočekávaného tokenu `('

Tato chybová zpráva se také objeví, když zadáváte příkazy v příkazovém řádku systému Linux pro každodenní úkoly, jako je ruční kopírování souborů atd. Hlavní důvody, proč k této chybě dochází, je buď kvůli špatné syntaxi nebo problému operačního systému při interpretaci příkazů jiného systému / skořápky.

Co způsobuje chybu syntaxe poblíž neočekávaného tokenu `('?

Důvody této chybové zprávy jsou velmi rozmanité a nelze je uvést v jednom článku, protože při provádění příkazů se vyskytují tisíce možností syntaxe. Hlavní příčiny této chyby jsou:

  • Chybná syntaxe při provádění jakéhokoli příkazu na kterékoli platformě. Nepoužíváte příkaz správně nebo jste zadali nesprávnou syntaxi.
  • Prostředí není kompatibilní mezi systémy Unix / DOS.
  • Spouští se skript bash shell z jiného zdroje .

V tomto článku předpokládáme, že znáte základy kódování a máte představu, co děláte. Pokud jste začátečník, je nejlepší postupovat podle podrobných návodů jazyka / příkazu, který se pokoušíte provést. Pravděpodobně jste udělali chybu nějaké syntaxe.

Řešení 1: Kontrola syntaxe a formátu příkazů

Prvním a nejdůležitějším důvodem, proč se může zobrazit tato chybová zpráva, je špatná syntaxe v kódu nebo nedodržení přesného formátu příkazů. Každý příkaz má předdefinovaný formát, který můžete vidět v jeho dokumentaci. Některé parametry jsou volitelné, jiné jsou povinné.

Mimoto je třeba věnovat zvláštní pozornost dalšímu prostoru, použití dvojitých uvozovek a požadovaným povinným parametrům. Pokud některá z nich chybí nebo byla prohlášena nesprávně, nebudete moci svůj kód spustit.

Například namísto následujícího kódu

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

Musíte to provést jako

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

Také se ujistěte, že provádíte příkazy / shell skript správně, pokud překlenuje několik řádků.

Vzhledem k typu parametru jsou nutné uvozovky. Mezera může také zničit váš kód a vynutit chybové hlášení. Zkontrolujte, zda jste zkontrolovali úřední dokumentaci příkazu, který provádíte, a zkontrolujte, zda tam není nějaký problém.

Řešení 2: Odstraňování potíží se skriptem shellu

Pokud používáte skript shellu, který pracuje ve zdrojovém systému, ale vrací chybu v cíli, můžete skript vyřešit pomocí kontroly proměnných, které jsou uloženy během provádění, a pak se podívejte, co je příčinou problému. Toto je velmi častá příčina, protože v několika případech se prostředí snaží interpretovat netisknutelný znak.

Zkuste spustit prostředí s parametrem 'vx'. To nám ukáže, jaké příkazy se spouštějí a jaké hodnoty jsou uloženy ve skriptu. Zde můžete řešit a diagnostikovat, co se děje.

Například spusťte skript v terminálu po zahrnutí 'vx' jako:

 # sh -vx ./test_script5.sh 

Obsah skriptu můžete zkontrolovat pomocí příkazu 'cat' jako:

 # cat test_script5.sh 

Řešení 3: Použití příkazu 'dos2unix.exe'

V textových souborech Windows / DOS je nový řádek kombinací návratu vozíku (\ r) následovaného řádkovým posuvem (\ n). V Macu (před Mac OS X) byl zalomení řádku použit jednoduchý návrat vozíku (\ r). Unix / Linux a Mac OS X používají zalomení řádků (\ n). Používáte-li Cygwin, selže zpracování skriptů vytvořených DOS / Windows a starším Macem kvůli zvláštnímu znaku Carriage Return (\ r).

Pomocí příkazu 'dos2unix.exe'

Zde můžete vytvořit příkaz 'dos2unix.exe', který převede skript do správného formátu a poté jej můžete spustit bez problémů.

Na závěr je třeba prozkoumat vaše příkazy a typ platformy, kterou používáte, a ujistit se, že neexistují žádné nesrovnalosti. Protože nemůžeme pokrýt každou možnost, měli byste vědět, jaké druhy chyb se mohou vyskytnout a jak je opravit.

Zajímavé Články