У меня есть bash script, который вызывает несколько длительных процессов. Я хочу записать вывод этих вызовов в переменные для обработки. Однако, поскольку это длительные процессы, я хотел бы, чтобы вывод вызовов 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.