5

是否有类似于 Ruby Object#tapfor Unix 命令管道的惯用模拟?

用例:在管道中,我想对其副作用执行命令,但隐式返回输入,以免破坏管道的链接。例如:

echo { 1, 2, 3 } |
  tr ' ' '\n' |
  sort |
  tap 'xargs echo' | # arbitrary code, but implicitly return the input
  uniq

我来自Ruby,我会这样做:

[ 1, 2, 3 ].
  sort.
  tap { |x| puts x }.
  uniq
4

1 回答 1

6

tee命令类似;它将输入写入标准输出以及一个或多个文件。如果那个文件是一个进程替换,我相信你会得到同样的效果。

echo 1 2 3 | tr ' ' '\n' | sort | tee >( **code** ) | uniq

进程替换中的代码将从其标准输入中读取,这应该与调用uniq最终看到的内容相同。

于 2012-09-22T17:17:39.357 回答