Ich möchte eine Schleife erstellen, die eine Ncftp-Übertragung wiederholt, wenn es einen Fehler zurückgibt.
Ich bin ein wenig unsicher, wie die Exit-Code-Variable in einer Schleife verwendet werden kann. Würde so etwas funktionieren?
until [$? == 0]; do
ncftpput -DD -z -u user -p password remoteserver /remote/dir /local/file
done
Antworten:
Die Basis für diese elegante Schleife habe ich an anderer Stelle bei serverfault gefunden. Es hat sich herausgestellt, dass der Exit-Code nicht gespeichert werden muss, da Sie ihn direkt mit dem Befehl selbst testen können.
quelle
Fast. Wahrscheinlich ist es besser, den Rückgabewert als Variable zu speichern, damit Sie ihn vor der Schleife voreinstellen können. Andernfalls wird es vom zuletzt ausgeführten Befehl beeinflusst.
Möglicherweise möchten Sie auch einen
sleep
in diese Position werfen, um zu verhindern, dass er zu schnell wieder auftaucht.quelle
Etwas verrückt, aber meine Lösung war, einfach eine Bash-Funktion zu erstellen, die sich selbst ausführt, wenn sie mit einem Fehler beendet wird
quelle
Sie können eine Schleife ausführen, während Ihr Befehl einen Fehler zurückgibt:
quelle