存储在变量中时打印命令输出

Ale*_*ker 0 bash stdout tee io-redirection

我正在运行单元测试,这可能需要一些时间才能完成,在bash shell中,这些测试在运行时打印输出.我希望打印此输出,并且我还希望将输出存储在变量中.但是,如果可能的话,我希望这些内容可以同时完成,就像tee写入文件时命令一样.也许tee在这种情况下工作......

所以我目前正在这样做:

output=$(ginkgo -r -cover)
echo "$output"
Run Code Online (Sandbox Code Playgroud)

但是,在所有测试运行之前,这显然不会打印单元测试输出.那么如何在测试运行时将输出打印出来,同时将输出存储在变量中呢?

小智 6

output=$(ginkgo -r -cover | tee /dev/fd/2)
Run Code Online (Sandbox Code Playgroud)

您可以使用tee将stdout发送到stdout和stderr.将stdout捕获到您的变量中,打印stderr.

  • `$()`在子shell中运行它的内容,因此父shell不能提供`PIPESTATUS`.但可以有子外壳传播管状态与`输出= $(银杏-r -cover |三通的/ dev/FD/2;出口$ {PIPESTATUS [0]})**其退出状态` (2认同)