如何在打印在屏幕上的同时将打印件存储在变量中?

时间:2014-10-02 19:00:09

标签: linux bash

我有一个在屏幕上保持打印的命令。我必须收集它的印刷品来做某事,而我必须监督印刷品。

我怎么能用bash做到这一点?

2 个答案:

答案 0 :(得分:1)

使用tee

VAR=$(my_cmd --args ... | tee /dev/stderr)

tee同时输出到屏幕和文件。但是,在这里我们指定stderr,这是另一个进入屏幕的流。变量捕获stdouttee将该输出的副本放在stderr上,然后转到您的屏幕。

答案 1 :(得分:1)

您可以复制标准输出:

exec 9>&1
variable=$(date |tee >(cat - >&9))
echo "Variable contains: $variable"

打印:

Thu Oct  2 21:21:52 CEST 2014   #normal output from the date
Variable contains: Thu Oct  2 21:21:52 CEST 2014     #the echo...