• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Probleme mit Shell-Script (Bash)

erdnah

Newbie
Hallo,

ich habe zwei Fragen:

1. Der unten stehende Abschnitt ist Teil eines Shell-Scriptes, das nachts BackUps für mich ausführt. Eigentlich geht das Script nach dem quit noch weiter, jedoch bricht es dort ständig ab. Was mache ich falsch?

Code:
# Upload BackUp
ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
put ${BACKUP} ${BACKUP_FILE}
quit


2. Ich habe einen Zähler $I. Wie muss die Syntax einer Abfrage sein, die immer dann etwas macht, wenn $I nicht durch 10 teilbar ist (wenn also ein Rest bleibt)?

Ich hoffe dass mir jemand helfen kann!

Cheers,
erdnah[/code]
 
A

Anonymous

Gast
Versuch mal folgendes

Code:
ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
put ${BACKUP} ${BACKUP_FILE}
quit
END_SCRIPT
echo "hier gehts jetzt weiter"


Auf deine 2 Frage: hier hilft Modulo das ist wie in anderen Programmiersprachen auch der Operator " % "

Beispiel:
Code:
for i in $(seq 1 20)
do
echo " $i / 3  Rest  $[$i % 3]"
done

robi
 
OP
E

erdnah

Newbie
Vielen Dank für die rasche korrekte Hilfe!

Ich habe versucht eine Überprüfung zu implementieren, die, nachdem ein neues BackUp hochgeladen worden ist, das BackUp des Vortags löscht, außer die ID des BackUps ist durch 10 teilbar (so dass ich auch ein paar ältere BackUps behalte). Leider erhalte ich stets die Fehlermeldung: "syntax error: unexpected end of file".

Dies ist der relevante Code-Ausschnitt:
Code:
# Delete some older BackUps
if test $[$BACKUP_YESTERDAY % 10] -ne "0" 
then
	ftp -n $HOST <<END_SCRIPT
	quote USER $USER
	quote PASS $PASSWD
	quit
	END_SCRIPT
	echo "Gestriges BackUp (ID "${BACKUP_YESTERDAY}") geloescht." 
else
	echo "Gestriges BackUp (ID "${BACKUP_YESTERDAY}") behalten." 
fi

Wenn ich den "FTP-Kram" entferne und mich nur auf "Shell-Befehle" beschränke, gibt es keine Probleme. :?
 
A

Anonymous

Gast
Wenn ich da Leerzeilen einfüge, dann plötzlich funktione :?:
verstehe ich auch nicht so recht, aber so sollte es gehen.
Code:
if test $[$BACKUP_YESTERDAY % 10] -ne "0" 
 then 
    ftp -n $HOST <<END_SCRIPT 
    quote USER $USER 
    quote PASS $PASSWD 
    quit 

END_SCRIPT
 
    echo "Gestriges BackUp (ID "${BACKUP_YESTERDAY}") geloescht." 
 else 
    echo "Gestriges BackUp (ID "${BACKUP_YESTERDAY}") behalten." 
 fi
robi
 
OP
E

erdnah

Newbie
Nee, sorry, bei mir ändert das nichts an dem Auftreten des Fehlers. :(

Noch eine Idee??
 
A

Anonymous

Gast
Hast du END_SCRIPT auch wirklich am Zeilenanfang einer sonst leeren Zeile ?

robi
 
OP
E

erdnah

Newbie
Ich hätte schwören können, dass ich es am Anfang einer leeren Zeile hatte... :roll:

So geht's tatsächlich (auch ohne die Leerzeilen):
Code:
# Delete old BackUp
if test $[$BACKUP_YESTERDAY % 10] -ne "0"
  then
    ftp -n $HOST <<END_SCRIPT
    quote USER $USER
    quote PASS $PASSWD
    del ${BACKUP_FILE_YESTERDAY}
    quit
END_SCRIPT
    echo "Gestriges BackUp (ID "${BACKUP_YESTERDAY}") geloescht." 
else
    echo "Gestriges BackUp (ID "${BACKUP_YESTERDAY}") behalten." 
fi

Danke!!
 
Oben