Syntaxfehler in der Nähe eines unerwarteten Tokens in Bash
Dieser Artikel demonstriert das Identifizieren und Korrigieren der unerwarteten Token-Syntaxfehler, die durch die unsichtbaren Zeichen in Bash-Skripten verursacht werden.
Syntaxfehler in der Nähe eines unerwarteten Tokens in Bash
Manchmal funktioniert ein Bash-Skript, das syntaktisch einwandfrei aussieht, nicht. Sie erhalten einen vagen Syntaxfehler
, der auch nicht weiterhilft.
Angenommen, Sie haben einen Code wie:
#!/bin/bash
while :
do
echo "This will repeat every second until you press CTRL + C"
sleep 1
done
Syntaktisch ist der obige Code korrekt. Allerdings können einige unsichtbare Zeichen den Code unter Linux syntaktisch unlesbar machen.
Wie können wir bestätigen, ob die unsichtbaren Zeichen das Problem verursachen oder nicht? Wie lösen wir das?
Die Lösung ist einfach, wie in den vorangegangenen Abschnitten besprochen.
Identifizieren Sie das Problem
Angenommen, filename.sh
ist die Datei, die Sie für das Bash-Skript gespeichert haben.
Öffnen Sie Ihr Terminal und navigieren Sie zum Speicherort der Datei. Führen Sie dann den folgenden Befehl im Terminal aus.
cat -v filename.sh
Die unsichtbaren Zeichen, die wahrscheinlich einen Wagenrücklauf oder ein Leerzeichen darstellen, sollten als ^M
, M-BM-
oder M-
angezeigt werden. Wenn andere seltsame Zeichen in Ihre Datei gelangen, sollten Sie sie auch sehen können.
Wir haben ein paar Optionen, um unser Problem in unserem Fall zu beheben.
Entfernen Sie Windows-Zeilenumbrüche mithilfe von Konsolenbefehlen
Wenn Sie eine problematische Datei mit dem Namen filename.sh
haben, können wir den folgenden Befehl verwenden, um den korrigierten Inhalt in einer Datei namens correctedFile.sh
zu speichern.
tr -d '\r' < filename.sh > correctedFile.sh
Konvertieren Sie Nicht-UNIX-Dateien automatisch in ein UNIX-freundliches Format
Dazu benötigen Sie ein Dienstprogramm namens dos2unix
. Wenn Sie als Paketmanager apt
verwenden, können Sie dos2unix
mit folgendem Befehl installieren:
sudo apt install dos2unix
Oder, wenn Sie eine Arch-basierte Distribution verwenden, können Sie dos2unix
aus dem AUR installieren.
Um die Datei in ein UNIX-freundliches Format zu konvertieren, öffnen Sie Ihr Terminal und navigieren Sie zu dem Ordner, der die gewünschte Datei enthält. Wir betrachten eine Datei namens filename.sh
.
Geben Sie den folgenden Befehl in Ihr Terminal ein.
dos2unix filename.sh
Der obige Befehl konvertiert Ihre Datei in ein UNIX-freundliches Format. Somit das Problem lösen.
Hoffentlich läuft Ihr Bash-Skript jetzt gut. Wenn es immer noch nicht läuft, haben Sie höchstwahrscheinlich echte Syntaxprobleme.
Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.
LinkedIn