Fix: Syntaxfehler in der Nähe des unerwarteten Tokens `('

Der Syntaxfehler der Fehlermeldung in der Nähe des unerwarteten Tokens "(" tritt in einer Unix-Umgebung, Cygwin, und in der Befehlszeilenschnittstelle von Windows auf. Dieser Fehler wird höchstwahrscheinlich ausgelöst, wenn Sie versuchen, ein Shellskript auszuführen, das bearbeitet wurde oder erstellt in älteren DOS / Windows- oder Mac-Systemen.

Syntaxfehler in der Nähe des unerwarteten Tokens `('

Diese Fehlermeldung wird auch angezeigt, wenn Sie Befehle in der Linux-Befehlszeile für alltägliche Aufgaben wie das manuelle Kopieren von Dateien usw. eingeben. Die Hauptursache für diese Fehlermeldung liegt entweder in einer schlechten Syntax oder in einem Problem des Betriebssystems bei der Interpretation der Befehle eines anderen Systems. Schale.

Wodurch wird ein Syntaxfehler in der Nähe des unerwarteten Tokens `('verursacht?

Die Gründe für diese Fehlermeldung sind sehr vielfältig und können nicht in einem Artikel aufgeführt werden, da bei der Ausführung von Befehlen Tausende von Syntaxfehlern auftreten können. Die Hauptgründe für diesen Fehler sind:

  • Falsche Syntax beim Ausführen eines Befehls auf einer der Plattformen. Entweder verwenden Sie den Befehl nicht richtig oder Sie haben die falsche Syntax eingegeben.
  • Die Shell ist nicht kompatibel zwischen Unix / DOS-Systemen.
  • Es gibt Probleme beim Ausführen des Bash-Shell-Skripts von einer anderen Quelle .

In diesem Artikel wird davon ausgegangen, dass Sie die Grundlagen der Codierung kennen und eine Vorstellung davon haben, was Sie tun. Wenn Sie Anfänger sind, sollten Sie ausführliche Tutorials der Sprache / des Befehls befolgen, die Sie ausführen möchten. Sie haben wahrscheinlich einen Fehler in der Syntax gemacht.

Lösung 1: Überprüfen von Syntax und Format von Befehlen

Der Hauptgrund, warum diese Fehlermeldung auftreten kann, ist eine falsche Syntax in Ihrem Code oder Sie folgen nicht dem genauen Format der Befehle. Jeder Befehl hat ein vordefiniertes Format, das Sie in der Dokumentation sehen können. Einige Parameter sind optional, andere sind obligatorisch.

Darüber hinaus sollte besonders auf zusätzlichen Platz, die Verwendung von doppelten Anführungszeichen und die erforderlichen obligatorischen Parameter geachtet werden. Wenn einer von ihnen fehlt oder falsch deklariert wurde, können Sie Ihren Code nicht ausführen.

Zum Beispiel anstelle des folgenden Codes

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

Sie müssen es als ausführen

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

Stellen Sie außerdem sicher, dass Sie Ihr Befehls- / Shell-Skript korrekt ausführen, wenn es sich über mehrere Zeilen erstreckt.

Aufgrund des Parametertyps sind doppelte Anführungszeichen erforderlich. Ein zusätzliches Leerzeichen kann auch Ihren Code zerstören und die Fehlermeldung erzwingen. Stellen Sie sicher, dass Sie die offizielle Dokumentation des ausgeführten Befehls überprüfen und feststellen, ob dort ein Problem vorliegt.

Lösung 2: Fehlerbehebung beim Shell-Skript

Wenn Sie ein Shell-Skript verwenden, das im Quellsystem funktioniert, aber einen Fehler im Ziel zurückgibt, können Sie das Skript beheben, indem Sie die Variablen überprüfen, die während der Ausführung gespeichert werden, und dann feststellen, was das Problem verursacht. Dies ist eine sehr häufige Ursache, da die Shell in mehreren Fällen versucht, ein nicht druckbares Zeichen zu interpretieren.

Versuchen Sie, die Shell mit dem Parameter 'vx' auszuführen. Dies zeigt uns, welche Befehle ausgeführt werden und welche Werte im Skript gespeichert sind. Hier können Sie Fehler beheben und diagnostizieren, was falsch läuft.

Führen Sie das Skript beispielsweise im Terminal aus, nachdem Sie 'vx' wie folgt eingefügt haben:

 # sh -vx ./test_script5.sh 

Sie können den Inhalt des Skripts mit dem Befehl 'cat' wie folgt überprüfen:

 # cat test_script5.sh 

Lösung 3: Verwenden des Befehls 'dos2unix.exe'

In Windows / DOS-Textdateien ist eine neue Zeile eine Kombination aus einem Wagenrücklauf (\ r) und einem Zeilenvorschub (\ n). In Mac (vor Mac OS X) wurde für einen Zeilenumbruch ein einfacher Zeilenumbruch (\ r) verwendet. Unix / Linux und Mac OS X verwenden Zeilenumbrüche mit Zeilenvorschub (\ n). Wenn Sie Cygwin verwenden, können die von DOS / Windows und älteren Mac-Computern erstellten Skripts aufgrund des zusätzlichen Carriage Return-Zeichens (\ r) nicht verarbeitet werden.

Verwenden Sie den Befehl 'dos2unix.exe'

Hier können Sie den Befehl 'dos2unix.exe' ausführen, der das Skript in das richtige Format konvertiert, und es dann ohne Probleme ausführen.

Abschließend müssen Sie Ihre Befehle und die Art der verwendeten Plattform untersuchen und sicherstellen, dass keine Unstimmigkeiten bestehen. Da wir nicht alle Möglichkeiten abdecken können, haben Sie eine Vorstellung davon, welche Arten von Fehlern auftreten können und wie sie behoben werden können.

Interessante Artikel