Bash:将命令输出重定向到 STDOUT 和变量

Bash:将命令输出重定向到 STDOUT 和变量

在 Bash 脚本中,我需要将命令的输出重定向到变量,同时还将未缓冲的输出流式传输到终端。

我试过这个:

output=$(command 2>&1 | tee "$(tty)")

但这不会向终端输出任何内容。

我也尝试过

mytty=$(tty)
output=$(command 2>&1 | tee $mytty)

这给了我错误“tee:/dev/tty1:权限被拒绝”。

当前的操作系统是 OpenSUSE 15.0,我没有 sudo/root 权限。

答案1

尝试

... | tee /dev/tty

喜欢:

output=$( command 2>&1 | tee /dev/tty )

该命令tty在管道内不起作用:

$ echo $(tty)           # or (a lot better) simply:  tty
/dev/pts/4

$ echo aa | echo $(tty)
not a tty

这意味着管道的右侧未连接到 tty。

相关内容