Unix和tee——命令链

5
在Unix环境中,我想在一系列命令中使用tee,如下所示:
$ echo 1; echo 2 | tee file
1
2

$ cat file
2

为什么file最终只有来自最后一个命令的输出?

在本次讨论中,假设我无法将它们分开并单独运行这些命令。


除了创建显式子shell外,您还可以使用{ echo 1; echo 2; } | tee file将输出写入文件。请注意,{必须与命令用空格分开,并且}必须出现在命令可能出现的位置(因此在第二个分号之后)。另一种选择是始终创建一个包含两个不可分割命令的新脚本,并将其输出传输到teeconjoined-twin-processes | tee file - Jonathan Leffler
2个回答

5

由于分号表示向shell发送新的命令,因此它只输出第二个命令的结果。

将它们放入括号中即可:

(echo 1; echo 2) | tee file

4

尝试:

 ( echo 1; echo 2 ) | tee file

没有括号,它将被解析为:

 echo 1 ; ( echo 2 | tee file )

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接