5

Ruby のObject#tapUnix コマンド パイプラインに似た慣用句はありますか?

ユースケース: パイプライン内で、副作用のためにコマンドを実行したいが、パイプラインの連鎖を壊さないように暗黙的に入力を返したい。例えば:

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コマンドは似ています。入力を標準出力と 1 つ以上のファイルに書き込みます。そのファイルがプロセス置換であれば、同じ効果が得られると思います。

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

プロセス置換のコードは、標準入力から読み取られます。これは、 への呼び出しが最終的に確認するものと同じである必要がありますuniq

于 2012-09-22T17:17:39.357 に答える