いくつかの実行時間の長いプロセスを呼び出す bash スクリプトがあります。処理上の理由から、これらの呼び出しの出力を変数にキャプチャしたいと考えています。ただし、これらは長時間実行されるプロセスであるため、rsync 呼び出しの出力を事後ではなくリアルタイムでコンソールに表示したいと考えています。
この目的のために、私はそれを行う方法を見つけましたが、テキストを /dev/stderr に出力することに依存しています。/dev/stderr への出力は良い方法ではないと感じています。
VAR1=$(for i in {1..5}; do sleep 1; echo $i; done | tee /dev/stderr)
VAR2=$(rsync -r -t --out-format='%n%L' --delete -s /path/source1/ /path/target1 | tee /dev/stderr)
VAR3=$(rsync -r -t --out-format='%n%L' --delete -s /path/source2/ /path/target2 | tee /dev/stderr)
上記の例では、rsync を数回呼び出しており、処理中のファイル名を確認したいのですが、後で解析するため、最終的には出力を変数に入れたいと考えています。
これを達成するための「よりクリーンな」方法はありますか?
違いがある場合は、Ubuntu 12.04、bash 4.2.24 を使用しています。