pje*_*pje 5 ruby unix bash shell pipeline
Object#tap对于Unix命令管道,是否存在Ruby的惯用模拟?
用例:在管道中我想为其副作用执行一个命令,但是隐式返回输入,以便不破坏管道的链接.例如:
echo { 1, 2, 3 } |
tr ' ' '\n' |
sort |
tap 'xargs echo' | # arbitrary code, but implicitly return the input
uniq
Run Code Online (Sandbox Code Playgroud)
我来自Ruby,在那里我会这样做:
[ 1, 2, 3 ].
sort.
tap { |x| puts x }.
uniq
Run Code Online (Sandbox Code Playgroud)
该tee命令是相似的; 它将其输入写入标准输出以及一个或多个文件.如果该文件是进程替换,我相信你会得到相同的效果.
echo 1 2 3 | tr ' ' '\n' | sort | tee >( **code** ) | uniq
Run Code Online (Sandbox Code Playgroud)
进程替换中的代码将从其标准输入读取,这应该与uniq最终看到的调用相同.