Beim Ausführen eines Shell-Skripts wird folgender Fehler zurückgegeben:
-bash: ./log_job.sh: /bin/bash^M: schlechter Interpreter: Keine solche Datei oder Verzeichnis Fehlerursachen:
.sh Skript unter dem Windows-System geschrieben ist und es daher unsichtbare Zeichen geben kann, ist es sehr wahrscheinlich, dass die Skriptdatei im DOS-Format ist, das heißt, das Ende jeder Zeile wird durch \r\n identifiziert und ihr ASCII-Code ist 0x0D 0x0A.
Der Fehler, der beim Ausführen eines Shell-Skripts angezeigt wird, liegt hauptsächlich daran, dass die Shell-Skriptdatei im DOS-Format ist, d. h. das Ende jeder Zeile wird mit \r\n identifiziert und das Ende der UNIX-Format-Datei mit \n.
Besondere Anmerkung: ^M ist nicht das ^ und der Buchstabe M, die durch die Taste Shift + 6 erzeugt werden, es ist ein Zeichen, sein ASCII ist 0x0D, die Erzeugung besteht darin, zuerst STRG+V zu drücken und dann Enter (oder STRG+M) zu drücken
Lösung
Es gibt mehrere Möglichkeiten, zu überprüfen, ob die Skriptdatei im DOS- oder UNIX-Format vorliegt.
(1) Überprüfen Sie das Format der Schrift: cat -A Dateiname Aus den Anzeigeergebnissen lässt sich erkennen, dass die Dateizeile mit DOS-Format ^M$ und die Dateizeile im Unix-Format $ ist.
(2) Ändern Sie das Format des Skripts: vi-Dateinamen, um die Datei zu öffnen und auszuführen:Set ff=UnixSetze die Datei auf Unix und führe sie aus:wq, gespeichert im UNIX-Format.
(3) Überprüfen Sie das Format des Skripts: cat -Ein Dateiname Anhand des Anzeigeergebnisses können Sie beurteilen, dass die Dateizeile mit DOS-Format ^M$ ist und die Dateizeile, die im Unix-Format endet, $ ist.
|