小编arn*_*can的帖子

为不同的命令重用管道数据

我想对不同的应用程序使用相同的管道,例如:

cat my_file | {
  cmd1
  cmd2
  cmd3
}
Run Code Online (Sandbox Code Playgroud)

Cmd1 应该消耗部分输入。Cmd2 应该消耗另一部分等等。

但是,每个 cmd 都会吃掉更多的输入,然后它读取的内容确实需要适当的缓冲。

例如:

yes | nl | { 
  head -n 10 > /dev/null
  cat 
} | head -n 10
Run Code Online (Sandbox Code Playgroud)

来自第 912 行而不是第 11 行的输出。

Tee 不是一个好的选择,因为每个命令都应该消耗一部分标准输入。

有没有一种简单的方法可以让这个工作?

shell pipe tee

7
推荐指数
1
解决办法
1792
查看次数

标签 统计

pipe ×1

shell ×1

tee ×1