gpt4 book ai didi

bash - 使用 T 恤 : can anyone explain? 的怪异

转载 作者:行者123 更新时间:2023-11-29 08:59:54 26 4
gpt4 key购买 nike

有时我想在中间输出一个管道的内容(我们不都是这样吗?)。

我通常这样做(是的,我知道还有其他可能更好的方法):

terminal=$(tty) 
echo hello world |tee $terminal|awk '{print $2, $1}'

哪些输出

hello world
world hello

这很好,在各个方面都很可爱。

除非我真的喜欢在不创建 $terminal 变量的情况下这样做。很简单,您说,只需将管道中的“tee $terminal”替换为“tee $(tty)”,不需要变量?对吧?

错了。

echo hello world |tee $(tty)|awk '{print $2, $1}'

输出

world hello

换句话说,我从管道中间的输出被吞掉了。

现在我承认这绝对是第一世界的问题,但这让我很烦,我想知道为什么第二个解决方案不起作用。

有人吗?

最佳答案

如果你的系统支持,你可以直接用/dev/tty访问当前终端:

echo hello world | tee /dev/tty | awk '{print $2, $1}'

(无论如何,该文件在 Linux 和 Mac OS X 中可用。)

tty 命令返回连接到标准输入的文件名,它不一定是终端。在您的管道中,它是与前面命令的标准输出关联的"file"。

关于bash - 使用 T 恤 : can anyone explain? 的怪异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16694458/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com