如何将多个 bash 命令重定向到变量和屏幕?

如何将多个 bash 命令重定向到变量和屏幕?

我想将子 shell 的输出捕获到变量中并同时将其打印在终端屏幕上。是否可以通过将子 shell 分配给变量并将 stdout 和 stderr 传输到 tee 来实现此目的?以下脚本不起作用。

$ cat test
#!/bin/bash

echo "Command before the redirected subshell"
OP=$(
    echo "Command in the redirected subshell 1"
    echo "Command in the redirected subshell 2"
    echo "Error in the redirected subshell" > /dev/stderr
    ) 2>&1 | tee /dev/tty
echo "Command after the redirected subshell"
echo "OP=$OP"

子 shell 中的命令没有输出(重定向到 stderr 的命令除外),并且 $OP 似乎是一个零长度字符串。

感谢您的任何想法!

答案1

尝试这个:

op=$( (cmd1; cmd2; ... ; cmdN) | tee /dev/tty )

相关内容