Syntaxfehler: unerwartetes Dateiende

Syntaxfehler: unerwartetes Dateiende
#!/bin/sh
if [ -e $1 ] ; then 
mv $1 $1_$(date +%Y%m%d%H%M) 
fi
exit 0

Ich muss nach einer Datei suchen und wenn die Datei existiert, dann die Datei umbenennen und das Programm beenden. Wir müssen nur umbenennen, wenn die Datei existiert

bekomme den oben genannten Fehler

Antwort1

Generell sollten Bash-Variablen immer in Anführungszeichen gesetzt werden.

Nehmen wir zum Beispiel an, $1 ist My File.txt. Ihr Skript versucht Folgendes:

mv My File.txt My File.txt_201501010101

was mvbedeutet, dass Sie die Dateien My, File.txt, und Mygemeinsam zum Ziel verschieben möchten File.txt_201501010101.

Stattdessen möchten Sie Folgendes:

mv "My File.txt" "My File.txt_201501010101"

Im Folgenden finden Sie weitere Einzelheiten und Informationen zu anderen Fallstricken, die Sie vermeiden sollten: http://mywiki.wooledge.org/BashPitfalls#cp_.24file_.24target

PS exit 0am Ende eines Skripts ist überflüssig. Wenn das Skript ohne Fehler beendet wird, ist der Exit-Status implizit 0.

verwandte Informationen