解決策 1:
for DIR in * ; do rsync -a $DIR example.com:somewhere/ || break; done
これは、個々の rsync の実行が何らかの理由で失敗した場合にもループを終了します。
解決策 2:
Dennis の回答を拡張すると、コードは次のようになります。
trap "echo Exited!; exit;" SIGINT SIGTERM
実際の例 (たまたま rsync が関係しています) については、http://gist.github.com/279849 を参照してください。
解決策 3:
Control-C のトラップを設定できます。
trap <command> SIGINT
command
を実行します Control-C が押されたとき。 trap
を入れるだけです スクリプト内のどこかで、それを有効にしたい場所にステートメントを挿入してください。
解決策 4:
<オール>Ctrl-Z
を押してください スクリプトを一時停止します。kill %%
この回答のクレジット、説明、および詳細。
解決策 5:
コマンドの文字列を括弧内に入れると、文字列は単一のプロセスとして機能し、SIGINT を受け取り、Ctrl を押すと終了します。 -C :
(for DIR in * ; do rsync -a $DIR example.com:somewhere/ ; done)
しかし! rsync
の場合 コマンドを使用すると、複数のソースが許可されるため、記述したコードは次のように記述したほうがよいでしょう:
rsync -a * example.com:somewhere/