【发布时间】:2016-09-01 06:17:52
【问题描述】:
假设我想echo 某事并将其捕获到一个变量中,同时我在我的屏幕上看到它。
echo "hello" | tee tmp_file
var=$(< tmp_file)
所以现在我可以在终端中看到 hello 并将其保存到变量 $var 中。
但是,有什么方法可以做到这一点而不必使用临时文件? tee 似乎不是解决方案,因为它说(来自man tee)从标准输入读取并写入标准输出和文件,而这里是标准输出的两倍。
如果这很重要,我在 Bash 4.3 中。
【问题讨论】:
-
@xhienne 其实这个问题更清楚,答案很好,但也有一些无用的噪音。
-
@oguzismail 不,这些答案充其量只是误导。当一个人真正想写信给
stdout时,不应该写信给/dev/tty。/dev/tty可能根本不存在。 -
@xhienne 我明白了。 This one 不写信给
/dev/tty。同样,可能根本不支持进程替换。 -
@oguzismail 这正是其他答案更好的原因。在这里,您必须挖掘直到最不赞成的答案才能找到正确的答案。在那里,接受的答案是正确的,如果您的 bash 太旧而无法提供命令替换,那么第二个和第三个答案就可以解决问题。