【发布时间】:2012-09-09 04:45:26
【问题描述】:
我有一个 bash 脚本,它调用了几个长时间运行的进程。出于处理原因,我想将这些调用的输出捕获到变量中。但是,由于这些是长时间运行的进程,我希望 rsync 调用的输出实时显示在控制台中,而不是事后显示。
为此,我有found 一种方法,但它依赖于将文本输出到/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。
【问题讨论】:
标签: bash ubuntu tee process-substitution