Solution 1 :
for DIR in * ; do rsync -a $DIR example.com:somewhere/ || break; done
Cela sortira également de la boucle si une exécution individuelle de rsync échoue pour une raison quelconque.
Solution 2 :
Pour développer la réponse de Dennis, votre code pourrait ressembler à :
trap "echo Exited!; exit;" SIGINT SIGTERM
Pour un exemple de travail (qui implique rsync), consultez http://gist.github.com/279849.
Solution 3 :
Vous pouvez définir un piège pour Control-C.
trap <command> SIGINT
exécutera le command
lorsque Control-C est pressé. Mettez simplement le trap
déclaration quelque part dans votre script à un point où vous voulez qu'elle devienne effective.
Solution 4 :
- Appuyez sur
Ctrl-Z
pour suspendre le script; kill %%
Crédits, explications et plus de détails dans cette réponse.
Solution 5 :
Lorsque vous mettez une chaîne de commandes entre parenthèses, la chaîne agira comme un processus unique, recevra le SIGINT et se terminera lorsque vous appuyez sur Ctrl -C :
(for DIR in * ; do rsync -a $DIR example.com:somewhere/ ; done)
Mais! Dans le cas du rsync
commande, il autorise plusieurs sources, donc le code que vous avez écrit serait mieux écrit comme suit :
rsync -a * example.com:somewhere/