Lösung 1:
for DIR in * ; do rsync -a $DIR example.com:somewhere/ || break; done
Dadurch wird die Schleife auch beendet, wenn ein einzelner rsync-Lauf aus irgendeinem Grund fehlschlägt.
Lösung 2:
Um die Antwort von Dennis zu erweitern, könnte Ihr Code so aussehen:
trap "echo Exited!; exit;" SIGINT SIGTERM
Ein funktionierendes Beispiel (das zufällig rsync beinhaltet) finden Sie unter http://gist.github.com/279849.
Lösung 3:
Sie können eine Falle für Control-C setzen.
trap <command> SIGINT
führt den command
aus wenn Strg-C gedrückt wird. Geben Sie einfach die trap
ein Anweisung irgendwo in Ihrem Skript an einer Stelle, an der sie wirksam werden soll.
Lösung 4:
- Drücken Sie
Ctrl-Z
um das Skript zu unterbrechen; kill %%
Credits, Erklärungen und weitere Details in dieser Antwort.
Lösung 5:
Wenn Sie eine Reihe von Befehlen in Klammern setzen, fungiert die Zeichenfolge als ein einzelner Prozess, empfängt das SIGINT und wird beendet, wenn Sie Strg drücken -C :
(for DIR in * ; do rsync -a $DIR example.com:somewhere/ ; done)
Aber! Im Fall von rsync
Befehl, erlaubt es mehrere Quellen, also wäre der Code, den Sie geschrieben haben, besser geschrieben als:
rsync -a * example.com:somewhere/