对于Unix命令管道,是否存在Ruby的Object#tap
惯用语?
用例:在一个管道中我想为其副作用执行命令但是隐式返回输入以便不破坏管道的链接。例如:
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
答案 0 :(得分:6)
tee
命令类似;它将其输入写入标准输出以及一个或多个文件。如果该文件是流程替换,我相信你会得到相同的效果。
echo 1 2 3 | tr ' ' '\n' | sort | tee >( **code** ) | uniq
流程替换中的代码将从其标准输入读取,这应该与uniq
的调用最终看到的相同。