Bash-Syntaxfehler in der Nähe eines unerwarteten Tokens behoben

Das Codieren im Linux Bash Terminal ist zu einer vorherrschenden Praxis im Codierungssektor geworden. Die Softwareingenieure und Studenten, die die Programmiersprache lernen, stoßen auf verschiedene Fehler. Wenn Sie wiederholt Fehler wie Syntaxfehler nahe unerwartetem Token ‚(‚ oder Bash-Syntaxfehler nahe unerwartetem Token gesehen haben, können Sie versuchen, sich auf die im Artikel beschriebenen Methoden zu verlassen und ein kompetenter Programmierer zu werden. Lesen Sie die im Artikel beschriebenen Methoden in der Reihenfolge beschrieben und beheben Sie die Fehler in den Befehlszeilen Ihrer Datei.

So beheben Sie einen Bash-Syntaxfehler in der Nähe eines unerwarteten Tokens

Linux Bash ist ein Kommandozeileninterpreter für das Linux-basierte System und ersetzt die Bourne Shell oder sh. Die Dateien werden im Linux-Bash-Skripting im .sh-Format benannt. Wenn Formatierungsprobleme im Code des Shell-Skripts auftreten, kann ein Syntaxfehler auftreten. Wenn der Fehler in der Nähe des Zeichens ( steht, fordert die Shell Sie zu dem Fehler in der Zeile auf und zeigt den Fehler in der entsprechenden Zeile an. Da Linux Bash ein Interpreter ist, wird Ihnen die Zeile mit dem Fehler in zurückgegeben das Terminal und es hört auf, die restlichen Befehle im Skript zu scannen.Daher müssen Sie den Fehler in der jeweiligen Befehlszeile beheben und mit der nächsten fortfahren, um den unerwarteten Token-Fehler im Shell-Skript zu beheben.Die Ursachen für die Syntax Fehler in der Nähe eines unerwarteten Tokens in Linux Bash sind unten in diesem Abschnitt wie folgt aufgeführt:

  • Codierung mit Escape-Sequenzen – Wenn Sie die Codes in Bash-Skripten geschrieben haben, können die Escape-Sequenzen oder die Anführungszeichen im Skript Fehler verursachen. Die Escape-Sequenzen und Anführungszeichen müssen im richtigen Format geschrieben werden, um den Fehler zu beheben.

  • Falsche Syntax in der Codierungsdatei – Die Syntax im Code kann zu einem Syntaxfehler führen, wenn der Befehl in der falschen Syntax geschrieben ist, z. B. wenn die Reihenfolge der Schleifen geändert wird.

  • Falsche Verwendung des Befehls – Wenn Sie den Befehl nicht richtig verwenden, z. B. eine falsche Wertzuweisung, liegt möglicherweise ein Syntaxfehler vor.

  • Inkompatibles Betriebssystem in den Systemen – Wenn die Shell für das Codierungsskript zwischen Unix- und DOS-Systemen nicht kompatibel ist, tritt möglicherweise ein unerwarteter Fehler auf.

  • Probleme im Bash-Shell-Skript – Die Probleme, die im Bash-Shell-Skript für die von einem anderen System kopierte Datei ausgeführt werden, können zu dem unerwarteten Token-Fehler führen.

Betrachten Sie zur Erläuterung eine Datei mit dem Namen example.sh, die im Linux Bash-Skript mit den folgenden Befehlszeilen erstellt wurde. Die Beispieldatei enthält die Möglichkeiten für Syntaxfehler und enthält alle möglichen Befehle, die im Shell-Skript verwendet werden können.

str= ‘First command line of ‘(example file)’ in the script’
str= [(1,2),(3,4)]
if[ $day == “mon” ] then
 echo “mon”
else
 echo “no mon”
fi
for VARIABLE in {0..2}; then
do echo command1; echo command2; echo command3; echo command4; done
while true; do if [ $ day == “mon” ]; then echo “mon”; else echo “not mon”; done; fi

Methode 1: Fehler in jeder Befehlszeile manuell beheben

Die erste Methode zum Beheben der Fehler besteht darin, den Syntaxfehler manuell in jeder Befehlszeile im Skript zu beheben. Die Schritte zum Beheben von Syntaxfehlern in der Nähe von unerwartetem Token in den Befehlszeilen werden in diesem Abschnitt erläutert. Der Prozess zum Beheben des unerwarteten Token-Fehlers im Terminal wird unten beschrieben. Führen Sie die Datei im Terminal aus, indem Sie den Befehl ./example.sh eingeben und die Eingabetaste drücken.

2. Beachten Sie die Zeilen mit dem unerwarteten Token-Fehler in den Befehlszeilen im Ergebnis unten.

3. Beheben Sie den Fehler in jeder Zeile, indem Sie die unten beschriebenen Methoden einzeln befolgen und die Datei speichern.

4. Führen Sie die Datei nach den Änderungen erneut aus und prüfen Sie, ob der Syntaxfehler in der Datei behoben ist.

Schritt I: Inhalt der Datei lesen

Der erste Schritt zur Behebung des Syntaxfehlers in den Befehlszeilen besteht darin, die Datei im Terminal einzulesen. Wenn es Probleme mit der Datei gibt, können Sie die Datei möglicherweise nicht anzeigen. Die normale Praxis zum Anzeigen der Datei besteht darin, die Datei mit dem Befehl ./example.sh auszuführen, aber Sie können den Inhalt der Datei nicht ändern. Die Optionen zum Anzeigen des Inhalts der Datei und zum Ändern der Befehlszeilen zum Beheben des Syntaxfehlers in der Nähe des unerwarteten Tokens „(“ werden unten erläutert.

Option 1: Über CAT-Befehl

Die erste Möglichkeit besteht darin, den cat-Befehl zu verwenden, um die Datei im Shell-Skript anzuzeigen. Lesen Sie den Inhalt der Datei mit dem unerwarteten Token-Fehler mit dem cat-Befehl, indem Sie im Terminal den Befehl cat –v example.sh eingeben.

Hinweis 1: example.sh wird zu Erläuterungszwecken verwendet und Sie müssen den Namen der Datei eingeben, die den unerwarteten Token-Fehler enthält.

Hinweis 2: Der Befehl cat –v wird verwendet, um alle unsichtbaren Zeichen anzuzeigen, die wahrscheinlich den Wagenrücklauf oder das Leerzeichen ohne Umbruch darstellen.

Option 2: Über VX-Befehl

Wenn Sie den cat-Befehl nicht verwenden können, können Sie versuchen, den vx-Befehl zu verwenden, um die Befehle in der Datei anzuzeigen und zu ändern, indem Sie den unten angegebenen Schritt verwenden. Geben Sie im Terminal den Befehl sh –vx ./example.sh ein, um die Datei zu öffnen.

Option 3: Durch od –a Command

3. Wenn die Befehlszeilen einige unsichtbare Zeichen enthalten, können Sie den Befehl od –a verwenden, um die Datei anzuzeigen. Wenn der Inhalt der Datei in der Codedatei nicht sichtbar ist, können Sie versuchen, die Datei mit dem Befehl od –a example.sh zu lesen, um den Code zu ändern.

Schritt II: Entfernen Sie Windows-Zeilenumbrüche

Wenn das Shell-Skript Windows-Zeilenumbrüche enthält, können Sie die Konsolenbefehle verwenden, um die Zeilenumbrüche zu entfernen und die Codezeilen in eine neue Datei zu kopieren, um den Fehler zu beheben.

Geben Sie den folgenden Befehl im Terminal ein, um den Inhalt der Datei in einer anderen Datei mit dem Namen correctedexample.sh zu speichern und die Windows-Zeilenumbrüche im Skript zu entfernen.

tr –d ‘r’ <example.sh> correctedexample.sh

Schritt III: Berechtigungen für neu erstellte Datei festlegen

Sie müssen der neu erstellten Datei die Berechtigung zum Bearbeiten der Datei setzen, damit die Datei in der Shell ausgeführt werden kann. Geben Sie den Befehl als chmod 755 correctedexample.sh im Terminal ein, um die Berechtigungen für die Datei bereitzustellen und die Datei auszuführen. Sie können jetzt die korrigierte Datei anzeigen und die Formatierungsprobleme beheben und den Syntaxfehler in der Nähe des unerwarteten Tokens „(“ in der Datei beheben.

Schritt IV: Code in der Datei formatieren

Der zweite Schritt besteht darin, die Codezeilen einzeln zu formatieren und die Befehlszeilen manuell in der Datei zu ändern. Die Optionen zum Formatieren der Datei zum Beheben des Syntaxfehlers in der Nähe des unerwarteten Tokens „(“ werden weiter unten in diesem Abschnitt erläutert.

Option 1: Ersetzen Sie einfache Anführungszeichen durch doppelte Anführungszeichen

Wenn Sie die einfachen Anführungszeichen in den Befehlszeilen verwenden, müssen Sie den Befehl ändern, indem Sie das einfache Anführungszeichen durch doppelte Anführungszeichen ersetzen, um den Syntaxfehler zu beheben. Entfernen Sie in der Datei example.sh die Codezeilen, die ‚ und ‚ oder die einfachen Anführungszeichen im Befehl enthalten, und ersetzen Sie die einfachen Anführungszeichen durch die doppelten Anführungszeichen oder das “ und “. Hier, in der Beispieldatei, müssen Sie den Code als str= „Erste Befehlszeile von „(Beispieldatei)“ im Skript“ ändern.

Hinweis: Die doppelten Anführungszeichen sind für Parametertypbefehle erforderlich, wie z. B. str= “[(1,2),(3,4)]“.

Option 2: Fügen Sie $ zu Zeichenfolgen hinzu

Wenn Sie dem Skript Zeichenfolgenwerte hinzugefügt haben, müssen Sie den Zeichenfolgenwerten ein $ hinzufügen, um den Syntaxfehler im Skript zu beheben. Fügen Sie das $ für die Befehlszeilen mit den Zeichenfolgewerten hinzu, um den unerwarteten Fehler zu beheben. Ändern Sie hier in der Beispieldatei die Befehlszeile wie folgt:

str= $ ‘First command line of ‘(example file)’ in the script’

Hinweis: Wenn Sie das $ im Zeichenfolgenwert verwenden, können Sie die Escape-Sequenz mit umgekehrtem Schrägstrich umgehen, da die Befehlszeilen vom ANSI-C-Standard decodiert werden. Mit anderen Worten, durch die Verwendung von $ für den Zeichenfolgenwert können Sie die Verwendung von doppelten Anführungszeichen anstelle von einfachen Anführungszeichen in den Befehlszeilen vermeiden.

Option 3: Wandeln Sie Tabulatoren in Leerzeichen um

Die Leerzeichen, die Sie zwischen zwei Anweisungen im Befehl gelassen haben, müssen Leerzeichen statt Tabulatoren sein, um den Syntaxfehler im Skript zu beheben. Wenn Sie den Fehler auf Cygwin erhalten, können Sie versuchen, die Tabulatoren in den Codes in Leerzeichen umzuwandeln, um den Fehler zu beheben. Die Befehlszeile ist unten angegeben als;

do echo command1;       echo command2;             echo command3;             echo command4;             done

Der obige Befehl sollte wie unten gezeigt umgeschrieben werden, um den Fehler zu beheben.

do echo command1; echo command2; echo command3; echo command4; done

Option 4: Verwenden Sie Escape-Zeichen

Wenn Sie ein Bash-Zeichen verwenden, ist es wichtig, ein Escape-Zeichen zusammen mit dem Bash-Zeichen zu verwenden, um den Syntaxfehler zu beheben. Die Klammern oder () sind Bash-Sonderzeichen in der Datei, daher müssten Sie das Escape-Zeichen oder den umgekehrten Schrägstrich in der Befehlszeile verwenden, um die normalen Zeichen zu entkommen, um den Befehl auszuführen. Der Befehl str= ‚First command line of ‚(example file)‘ in the script‘ würde im Terminal keinen Fehler ausgeben, da das Escape-Zeichen verwendet wird.

Option 5: Verwenden Sie Leerzeichen zwischen Zeichen

Das Shell-Skript erkennt die Befehle und Anweisungen im Skript anhand der Standardwerte. Sie müssen sicherstellen, dass die Leerzeichen zwischen den Zeichen richtig verwendet werden, damit die Shell den im Skript angegebenen Befehl identifizieren kann. Das Leerzeichen ist ein Zeichen, das verwendet wird, um zwei Zeichen in der Befehlszeile zu unterscheiden. Im Code gibt es kein Leerzeichen zwischen if und [, which gives the unexpected token error as the if[ command is not identified by the shell. If the code is changed to if [ $ day == “mon” ]; dann kann der Fehler als Shell-Bulletin-Befehl behoben werden, wenn er von der Shell identifiziert wird.

Option 6: Verwenden Sie das Befehlstrennzeichen für Anweisungen

Die verschiedenen Befehle im Shell-Skript müssen in Anweisungen unterteilt werden, damit das Terminal einzelne Befehle identifizieren kann. Sie müssen ein Befehlstrennzeichen verwenden, um den Syntaxfehler in Linux Bash zu beheben. Die Anweisungen im Befehl müssen durch ein Befehlstrennzeichen wie ein Semikolon oder ein ; oder eine neue Zeile durch Drücken der Eingabetaste. Zum Beispiel der Befehl im Code if [ $ day == “mon” ] muss dann wie geändert werden [ $ day == “mon” ]; dann um den fehler zu beheben. Da das Semikolon als Befehlstrennzeichen zwischen den Zeichen verwendet wird [ and then, you can fix this error.

Option 7: Remove Additional Statements

Sometimes, you may have added additional statements or may have mixed up the codes in case of multiple nested loops. You need to remove the additional statements on the command lines to fix the Syntax error near unexpected token ‘(’ in the Linux Bash. The bash loops for…done or and the constructional constructs if… fi needs to be in the correct syntax. The example file has the wrong syntax in the for loop has the term then which is used in the if statement. Modifying the code as the following code will fix the unexpected token error. The statement then is an additional statement in the code and removing the term will fix the error.

for VARIABLE in {0..2}; do echo command1; echo command2; echo command3; echo command4; done 

Option 8: Ensure Order of Closing of Statements is Correct

If you are using many nested or conditional construct statements in the shell script, you have to ensure that the loops are closed in the order they are opened. You can use a new line separator to avoid conflicts with the loops. The order of closing the nested loops and conditional statements should be correct and must not be altered. The loops in the code while true; do if [ $ day == “mon” ]; dann echo „mon“; sonst echo „nicht mon“; erledigt; fi muss in der richtigen Reihenfolge geschlossen werden. Durch Ändern des Codes wie unten gezeigt kann der unerwartete Tokenfehler behoben werden, da die Reihenfolge des Schließens der Anweisungen korrigiert wird.

while true; do if [ $ day == “mon” ]; then echo “mon”; else echo “not mon”; fi; done

Methode 2: Code umschreiben

Wenn Sie den Code kopiert und in eine neue Datei auf dem Terminal eingefügt haben, können Sie versuchen, den Code manuell umzuschreiben, um den Fehler zu beheben. Die Fehler im Code können behoben werden, wenn Sie den Code ohne Formatfehler im Shell-Skript geschrieben haben. Dies liegt daran, dass die versteckten Zeichen und die Formatierungsprobleme im Texteditor wie Microsoft Word, den Sie möglicherweise zum Kopieren und Einfügen des Codes verwendet haben, den Fehler verursacht haben.

Methode 3: Verwenden Sie den Befehl Dos2unix.exe

Wenn Sie ein Unix-Betriebssystem verwenden, können Sie Codes mit dem Zeilenvorschubzeichen als n schreiben, um zur nächsten Zeile in der Datei zu wechseln. Wenn Sie jedoch ein Windows-Betriebssystem verwenden, müssen Sie mit dem Wagenrücklauf und dem Zeilenvorschub oder dem rn in der Datei zur nächsten Zeile im Code wechseln. Wenn Sie den im Windows-Betriebssystem geschriebenen Code in Cygwin ausführen, erhalten Sie möglicherweise den Syntaxfehler in der Nähe des unerwarteten Tokens „(“.

Um den Fehler zu beheben, müssen Sie die Wagenrücklaufzeichen mit dem Befehlszeilentool von DOS zu Unix als Textdateiformatkonverter löschen. Geben Sie den folgenden Befehl als dos2unix.exe example.sh im Terminal ein und Sie können die Datei in das Unix-Format konvertieren.

***

Der Artikel hat die grundlegenden Methoden zur Behebung des Bash-Syntaxfehlers in der Nähe des unerwarteten Tokens ‚(‚ im Skript besprochen. Wenn Sie eine Linux-Bash verwenden, können Sie die in diesem Abschnitt erläuterten Methoden verwenden, um den Bash-Syntaxfehler in der Nähe des unerwarteten Tokens zu beheben den gesamten Artikel gelesen und den Inhalt für nützlich befunden haben, teilen Sie uns bitte Ihre Vorschläge und Fragen im Kommentarbereich mit.

  So laden Sie Filme und Fernsehsendungen für die Offline-Anzeige in Netflix herunter