我想将子 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 )