
#!/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 mv
bedeutet, dass Sie die Dateien My
, File.txt
, und My
gemeinsam 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 0
am Ende eines Skripts ist überflüssig. Wenn das Skript ohne Fehler beendet wird, ist der Exit-Status implizit 0.