Die wenigen Zeilen, die Sie aus Ihrem Skript gepostet haben, sehen für mich in Ordnung aus. Es ist wahrscheinlich etwas tieferliegendes.
Sie müssen herausfinden, welche Zeile Ihnen diesen Fehler gibt. Fügen Sie set -xv
hinzu an den Anfang Ihres Skripts. Dies gibt die Zeilennummer und den Befehl aus, der in STDERR ausgeführt wird . Dies wird Ihnen dabei helfen, festzustellen, wo in Ihrem Skript dieser bestimmte Fehler auftritt.
Übrigens, hast du einen Shebang ganz oben in deinem Drehbuch? Wenn ich so etwas sehe, erwarte ich normalerweise, dass es ein Problem mit dem Shebang ist. Zum Beispiel, wenn Sie #! /bin/bash
hatten oben, aber Ihr Bash-Interpreter befindet sich in /usr/bin/bash
, wird dieser Fehler angezeigt.
BEARBEITEN
Neue Frage:Wie kann ich die Datei überhaupt korrekt speichern, um zu vermeiden, dass ich diese Korrektur jedes Mal durchführen muss, wenn ich die Datei erneut sende?
Zwei Möglichkeiten:
- Wählen Sie Bearbeiten->EOL-Konvertierung->Unix-Format Menüpunkt, wenn Sie eine Datei bearbeiten. Sobald es die richtigen Zeilenenden hat, behält Notepad++ sie bei.
- Um sicherzustellen, dass alle neuen Dateien die richtigen Zeilenenden haben, gehen Sie zu den Einstellungen->Einstellungen Menüelement und rufen Sie die Einstellungen auf Dialogbox. Wählen Sie Neues Dokument/Standardverzeichnis aus Tab. Unter Neues Dokument und Formatieren , wählen Sie Unix aus Radio knopf. Klicken Sie auf Schließen Schaltfläche.
Ich verwende diesen Befehl zum einfachen Drehen einer Datei:
mv output.log `date +%F`-output.log
Im lokalen Ordner habe ich 2019-09-25-output.log
mv server.log logs/$(date -d "today" +"%Y%m%d%H%M").log
Eine einzeilige Methode innerhalb von Bash funktioniert so.
[einige Ausgaben]>$(date "+%Y.%m.%d-%H.%M.%S").ver
erstellt eine Datei mit einem Zeitstempelnamen mit der Erweiterung ver
find . -type f -exec ls -la {} \; | cut -d ' ' -f 6- >$(date "+%Y.%m.%d-%H.%M.%S").ver
Natürlich
cat somefile.log > $(date "+%Y.%m.%d-%H.%M.%S").ver
oder noch einfacher
ls > $(date "+%Y.%m.%d-%H.%M.%S").ver