Fix: syntaxisfout bij onverwacht token `(& lsquo;

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

Syntaxisfout bij onverwacht token `('

Dit foutbericht komt ook naar voren wanneer u opdrachten invoert in de Linux-opdrachtregel voor alledaagse taken zoals het handmatig kopiëren van bestanden enz. schelp.

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

De redenen voor deze foutmelding zijn zeer divers en kunnen niet in één artikel worden vermeld, aangezien er duizenden mogelijkheden zijn dat de syntaxis fout gaat bij het uitvoeren van opdrachten. De belangrijkste redenen voor deze fout zijn:

  • Slechte syntaxis bij het uitvoeren van een opdracht op een van 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 vanaf een andere bron .

In dit artikel gaan we ervan uit dat je de basis van coderen kent en een idee hebt wat je doet. Als u een beginner bent, is het het beste dat u diepgaande tutorials volgt over de taal / het commando dat u probeert uit te voeren. U heeft waarschijnlijk een syntaxis fout gemaakt.

Oplossing 1: syntaxis en indeling van opdrachten controleren

De eerste en belangrijkste reden waarom u deze foutmelding kunt krijgen, is die van een slechte syntaxis in uw code of dat u niet de exacte indeling van de opdrachten volgt. Elk commando heeft een voorgedefinieerd formaat dat u kunt zien in de documentatie. Verschillende parameters zijn optioneel, andere zijn verplicht.

Bovendien moet extra aandacht worden besteed aan extra spatie , het gebruik van dubbele aanhalingstekens en de verplichte parameters. Als er één 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 commando's / shell-script correct uitvoert als het meerdere regels beslaat.

Vanwege het parametertype zijn de dubbele aanhalingstekens noodzakelijk. Een extra spatie kan ook uw code verpesten en de foutmelding forceren. Zorg ervoor dat u de officiële documentatie van de opdracht die u uitvoert, controleert en kijk of daar een probleem is.

Oplossing 2: problemen met uw shell-script oplossen

Als u een shell-script gebruikt dat werkt in het bronsysteem 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 kijken wat het probleem veroorzaakt. Dit is een veel voorkomende oorzaak, omdat de shell in verschillende gevallen probeert een niet-afdrukbaar teken te interpreteren.

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

Voer bijvoorbeeld het script uit in de terminal nadat u 'vx' hebt opgenomen als:

# sh -vx ./test_script5.sh

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

# kat test_script5.sh

Oplossing 3: gebruik de opdracht 'dos2unix.exe'

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 Line Feed (\ n) regeleinden. Als je Cygwin gebruikt, zal het de scripts gemaakt door DOS / Windows en oudere Macs niet verwerken vanwege het extra Carriage Return (\ r) -teken.

Gebruik de opdracht 'dos2unix.exe'

Hier kunt u een 'dos2unix.exe' commando maken dat het script naar het juiste formaat zal converteren en dan kunt u het probleemloos uitvoeren.

Om af te sluiten, moet u uw opdrachten en het type platform dat u gebruikt onderzoeken en ervoor zorgen dat er geen verschillen zijn. Omdat we niet elke mogelijkheid kunnen behandelen, zou u een idee hebben welke soorten fouten kunnen optreden en hoe u deze kunt oplossen.

Aanbevolen

Oplossing: Minecraft reageert niet
Wat is de registratietoepassing voor een digitale tv-tuner en moet deze worden verwijderd?
Wat is FileRepMalware en moet u het verwijderen?