我有一个在屏幕上保持打印的命令。我必须收集它的印刷品来做某事,而我必须监督印刷品。
我怎么能用bash做到这一点?
答案 0 :(得分:1)
使用tee
:
VAR=$(my_cmd --args ... | tee /dev/stderr)
tee
同时输出到屏幕和文件。但是,在这里我们指定stderr
,这是另一个进入屏幕的流。变量捕获stdout
,tee
将该输出的副本放在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...