Oplossing: syntaxisfout in de buurt van onverwacht token `('

De syntaxisfout van het foutbericht in de buurt van onverwacht token `(' treedt op in een Unix-type omgeving, Cygwin en in de opdrachtregelinterface in Windows. Deze fout wordt waarschijnlijk geactiveerd wanneer u probeert een shellscript uit te voeren dat is bewerkt of gemaakt in oudere DOS / Windows- of Mac-systemen.

Syntaxisfout in de buurt van onverwacht token `('

Dit foutbericht verschijnt ook wanneer u opdrachten in de Linux-opdrachtregel invoert voor dagelijkse taken zoals het handmatig kopiëren van bestanden, enz. De belangrijkste redenen waarom dit foutbericht optreedt, is vanwege een slechte syntaxis of een probleem van het besturingssysteem bij het interpreteren van de opdrachten van een ander systeem / shell.

Wat veroorzaakt de syntaxisfout in de buurt van onverwacht token `('?

De redenen voor dit foutbericht zijn zeer divers en kunnen niet in één artikel worden vermeld, omdat er duizenden syntaxismogelijkheden misgaan bij het uitvoeren van opdrachten. De kernredenen voor deze fout zijn:

  • Onjuiste syntaxis bij het uitvoeren van een opdracht in beide platforms. Of u gebruikt de opdracht niet correct of u hebt de verkeerde syntaxis ingevoerd.
  • De shell is niet compatibel tussen Unix / DOS-systemen.
  • Er zijn problemen met het uitvoeren van het bash-shellscript van een andere bron .

In dit artikel gaan we ervan uit dat je de basisprincipes van codering kent en een idee hebt van wat je doet. Als je een beginner bent, is het het beste dat je diepgaande tutorials volgt van de taal / opdracht die je probeert uit te voeren. Je hebt waarschijnlijk een fout gemaakt in een syntaxis.

Oplossing 1: syntaxis en indeling van opdrachten controleren

De eerste en belangrijkste reden waarom u dit foutbericht kunt ervaren, is dat van een slechte syntaxis in uw code of dat u niet het exacte formaat van de opdrachten volgt. Elke opdracht heeft een vooraf gedefinieerde indeling die u kunt zien in de documentatie. Verschillende parameters zijn optioneel en andere zijn verplicht.

Bovendien moet extra aandacht worden besteed aan extra ruimte, het gebruik van dubbele aanhalingstekens en de vereiste verplichte parameters. Als een van deze ontbreekt of onjuist is aangegeven, kunt u uw code niet uitvoeren.

Bijvoorbeeld in plaats van de volgende code

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

U moet het uitvoeren als

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

Zorg er ook voor dat u uw opdrachten / shell-script correct uitvoert als het meerdere regels beslaat.

Vanwege het parametertype zijn dubbele aanhalingstekens nodig. Een extra spatie kan ook uw code verpesten en de foutmelding forceren. Controleer de officiële documentatie van de opdracht die u uitvoert en kijk of er een probleem is.

Oplossing 2: problemen met uw shellscript oplossen

Als u een shellscript gebruikt dat in het bronsysteem werkt maar een fout in het doel retourneert, kunt u het script oplossen door de variabelen te controleren die tijdens de uitvoering zijn opgeslagen en vervolgens te kijken wat het probleem veroorzaakt. Dit is een veel voorkomende oorzaak, omdat de shell in verschillende gevallen een onbedrukbaar karakter probeert te interpreteren.

Probeer de shell uit te voeren met de parameter 'vx'. Dit laat ons zien welke commando's worden uitgevoerd en welke waarden worden opgeslagen in het script. Hier kunt u problemen oplossen en diagnosticeren wat er misgaat.

Voer bijvoorbeeld het script in de terminal uit na het opnemen van 'vx' als:

 # sh -vx ./test_script5.sh 

U kunt de inhoud van het script controleren met de opdracht 'cat' als:

 # cat test_script5.sh 

Oplossing 3: de opdracht 'dos2unix.exe' gebruiken

In Windows / DOS-tekstbestanden is een nieuwe regel een combinatie van een Carriage Return (\ r) gevolgd door een Line Feed (\ n). In Mac (vóór Mac OS X) gebruikte een regeleinde een eenvoudige Carriage Return (\ r). Unix / Linux en Mac OS X gebruiken regeleindes van Line Feed (\ n). Als u Cygwin gebruikt, kan de scripts van DOS / Windows en oudere Mac niet worden verwerkt vanwege het extra Carriage Return-teken.

De opdracht 'dos2unix.exe' gebruiken

Hier kunt u de opdracht 'dos2unix.exe' maken die het script naar het juiste formaat converteert en vervolgens zonder problemen kunt uitvoeren.

Om te concluderen, moet u uw commando's en type platform dat u gebruikt onderzoeken en ervoor zorgen dat er geen verschillen zijn. Omdat we niet elke mogelijkheid kunnen dekken, zou u een idee hebben welke soorten fouten kunnen optreden en hoe u deze kunt oplossen.

Interessante Artikelen