![Probleme mit einfachem Skript :(](https://rvso.com/image/1083746/Probleme%20mit%20einfachem%20Skript%20%3A(.png)
Kann mir bitte jemand sagen, warum dieses Skript nicht richtig ausgeführt wird? Es scheint ein Problem mit der if-Anweisung zu sein, da ich immer wieder den Fehler bekomme:
/home/sinttx/Development/backup/ddbackup.sh: line 18: syntax error near unexpected token `then'
/home/sinttx/Development/backup/ddbackup.sh: line 18: if [ "$exit" -eq 0 ] ; then'
Das Skript:
#!/bin/bash
#(SINTTX) Function and if statement to backup/clone /dev/???.
echo "
THIS WILL COMPLETE A BACKUP OF DESIRED /DEV "
echo -n "Enter desired name for saved file (File will be saved with extention .iso) and press [ENTER]: "
read iso
echo -n "Enter the device to be duplicated/backed up (Eg /dev/sda) and press [ENTER]: "
read dev
echo -n "Enter the desired path/location for the backup file (Eg /home/USERNAME/backups/) and press [ENTER]: "
read path
echo "PLEASE ENTER THE SUDO PASSWORD (IF PROMPTED) AND WAIT :-)
NOTE: THIS COULD TAKE SOME TIME DEPENDING ON FILE SIZE AND HARDWARE SPEED!!"
sudo dd if="$dev" of="$path"/"$iso"
exit=$?
if [ "$exit" -eq 0 ] ; then
echo "SUCCESS"
else
echo "BACKUP HAS SUFFERED AN ERROR AND DID NOT COMPLETE SUCCESSFULLY"
fi
Antwort1
Als@Cyrus hat vorgeschlagen, haben Sie dort wahrscheinlich ein nicht druckbares Zeichen, das Ihnen Probleme bereitet. Der wahrscheinlichste Grund ist, dass Sie dieses Skript irgendwann von einem Windows-Rechner aus bearbeitet haben und \r
am Ende der Zeile ein hinzugefügt wurde. Sie können überprüfen, ob in dieser Zeile etwas steht, indem Sie Folgendes ausführen:
grep 'if [ "$exit"' script.sh | od -c
Dadurch werden alle Zeichen angezeigt, auch die nicht druckbaren.
Wenn Sie tatsächlich ein \r
Problem haben, können Sie es beheben, indem Sie „
sed -i 's/\r//' script.sh
Oder installieren Sie dos2unix
( sudo apt-get install dos2unix
) und führen Sie
dos2unix script.sh > fixed.sh