如何将输出捕获到变量中并仍然将其显示到屏幕上?

如何将输出捕获到变量中并仍然将其显示到屏幕上?

我可以OUTPUT=$(grunt test)这样做,这会将输出放入OUTPUT但它不再显示在屏幕上。我还需要查看输出,所以我不能只是等待然后echo $OUTPUT

如何捕获程序的输出仍然同时进入屏幕吗?

答案1

你可以尝试这样的事情:

exec 9>&1
OUTPUT=$(grunt test | tee /dev/fd/9)
exec 9>&-

它将当前的 stdout 复制到文件描述符 9,用于将 的输出tee复制grunt到该文件描述符,然后关闭临时文件描述符。

相关内容