Bash-Syntaxfehler in der Nähe eines unerwarteten Tokens behoben
Veröffentlicht: 2022-05-30Das 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.
Inhalt
- So beheben Sie einen Bash-Syntaxfehler in der Nähe eines unerwarteten Tokens
- Methode 1: Fehler in jeder Befehlszeile manuell beheben
- Schritt I: Inhalt der Datei lesen
- Schritt II: Entfernen Sie Windows-Zeilenumbrüche
- Schritt III: Berechtigungen für neu erstellte Datei festlegen
- Schritt IV: Code in der Datei formatieren
- Methode 2: Code umschreiben
- Methode 3: Verwenden Sie den Befehl Dos2unix.exe
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= 'Erste Befehlszeile von '(Beispieldatei)' im Skript' str= [(1,2),(3,4)] if[ $day == „mon“ ] then echo "mon" anders echo "nein mon" fi für VARIABLE in {0..2}; dann do echo command1; Echobefehl2; Echobefehl3; Echobefehl4; erledigt während wahr; tun, wenn [ $ Tag == „mon“ ]; dann echo „mon“; sonst echo „nicht mon“; erledigt; 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.
Lesen Sie auch: So installieren Sie Linux Bash Shell unter Windows 10
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> korrigierteexample.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 wie str= „[(1,2),(3,4)]“ erforderlich.
Lesen Sie auch: Die 20 besten Lightweight-Linux-Distributionen von 2022
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= $ 'Erste Befehlszeile von '\(Beispieldatei)\' im Skript'
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; Echobefehl2; Echobefehl3; Echobefehl4; erledigt
Der obige Befehl sollte wie unten gezeigt umgeschrieben werden, um den Fehler zu beheben.
do echo command1; Echobefehl2; Echobefehl3; Echobefehl4; erledigt
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= 'Erste Befehlszeile von \'(Beispieldatei)\' im Skript'- Befehl würde im Terminal keinen Fehler ausgeben, da das Escape-Zeichen verwendet wird.
Lesen Sie auch: Wie man unter Linux unter uns kommt
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 [ , was zu einem unerwarteten Token-Fehler führt, da der if[ -Befehl nicht von der Shell identifiziert wird. Wenn der Code geändert wird zu 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 muss der Befehl im Code if [ $ day == „mon“ ] dann so geändert werden, als ob [ $ day == „mon“ ]; dann um den fehler zu beheben. Da das Semikolon als Befehlstrennzeichen zwischen den Zeichen [ und dann verwendet wird, können Sie diesen Fehler beheben.
Option 7: Zusätzliche Anweisungen entfernen
Manchmal haben Sie möglicherweise zusätzliche Anweisungen hinzugefügt oder bei mehreren verschachtelten Schleifen die Codes verwechselt. Sie müssen die zusätzlichen Anweisungen in den Befehlszeilen entfernen, um den Syntaxfehler in der Nähe des unerwarteten Tokens „(“ in der Linux-Bash zu beheben. Die Bash-Schleifen für … fertig oder und die Konstruktionskonstrukte, wenn … fi in der richtigen Syntax sein muss Beispieldatei hat die falsche Syntax in der for -Schleife hat den Begriff then , der in der if -Anweisung verwendet wird. Durch Ändern des Codes wie im folgenden Code wird der unerwartete Tokenfehler behoben. Die Anweisung then ist eine zusätzliche Anweisung im Code und entfernt den Begriff wird den Fehler beheben.
für VARIABLE in {0..2}; do echo command1; Echobefehl2; Echobefehl3; Echobefehl4; erledigt
Option 8: Stellen Sie sicher, dass die Reihenfolge des Abschlusses der Anweisungen korrekt ist
Wenn Sie im Shell-Skript viele verschachtelte oder bedingte Konstruktanweisungen verwenden, müssen Sie sicherstellen, dass die Schleifen in der Reihenfolge geschlossen werden, in der sie geöffnet wurden. Sie können einen neuen Zeilentrenner verwenden, um Konflikte mit den Schleifen zu vermeiden. Die Reihenfolge des Schließens der verschachtelten Schleifen und bedingten Anweisungen sollte korrekt sein und darf nicht geändert werden. Die Schleifen im Code sind zwar wahr; tun, wenn [ $ Tag == „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.
während wahr; tun, wenn [ $ Tag == „mon“ ]; dann echo „mon“; sonst echo „nicht mon“; fi; erledigt
Lesen Sie auch: Was ist ein Befehlszeileninterpreter?
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 Zeilenvorschub oder dem \r\n 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 DOS-zu-Unix -Befehlszeilentool 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.
Empfohlen:
- So erstellen Sie ein Telegrammkonto auf Android
- Laufzeitfehler C++ unter Windows 10 beheben
- So löschen Sie das Github-Konto dauerhaft
- Top 14 der besten Grafikkarten für Linux
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 Nachdem Sie 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.