Soluzione 1:
for DIR in * ; do rsync -a $DIR example.com:somewhere/ || break; done
Questo uscirà anche dal ciclo se una singola esecuzione di rsync fallisce per qualche motivo.
Soluzione 2:
Per espandere la risposta di Dennis, il tuo codice potrebbe essere simile a:
trap "echo Exited!; exit;" SIGINT SIGTERM
Per un esempio funzionante (che coinvolge rsync), dai un'occhiata a http://gist.github.com/279849.
Soluzione 3:
Puoi impostare una trappola per Control-C.
trap <command> SIGINT
eseguirà command
quando viene premuto Control-C. Basta inserire il trap
istruzione da qualche parte nel tuo script in un punto in cui vuoi che diventi effettiva.
Soluzione 4:
- Premi
Ctrl-Z
per sospendere lo script; kill %%
Riconoscimenti, spiegazioni e maggiori dettagli in questa risposta.
Soluzione 5:
Quando metti una stringa di comandi tra parentesi, la stringa agirà come un singolo processo, riceverà il SIGINT e terminerà quando premi Ctrl -C :
(for DIR in * ; do rsync -a $DIR example.com:somewhere/ ; done)
Ma! Nel caso del rsync
comando, consente più fonti, quindi il codice che hai scritto sarebbe meglio scritto come:
rsync -a * example.com:somewhere/