![Bash:将命令输出重定向到 STDOUT 和变量](https://linux22.com/image/156061/Bash%EF%BC%9A%E5%B0%86%E5%91%BD%E4%BB%A4%E8%BE%93%E5%87%BA%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%20STDOUT%20%E5%92%8C%E5%8F%98%E9%87%8F.png)
在 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。