Ruby 2.6.0 リファレンスマニュアル > ライブラリ一覧 > open3ライブラリ > Open3モジュール > pipeline

module function Open3.#pipeline

pipeline(*cmds) -> [Process::Status][permalink][rdoc]

指定したコマンドのリストをパイプで繋いで順番に実行します。

[PARAM] cmds:
実行するコマンドのリストを指定します。それぞれのコマンドは以下のように StringArray で指定します。 commandline にはコマンド全体(例. "nroff -man")を表す String を指定します。 options には Hash で指定します。 env には環境変数を Hash で指定します。 cmdname にはコマンド名を表す String を指定します。 1、2、3 は shell 経由で実行されます。
  1. commandline
  2. [commandline, options]
  3. [env, commandline, options]
  4. [env, cmdname, arg1, arg2, ..., options]
  5. [env, [cmdname, argv0], arg1, ..., options]
[RETURN]
実行したコマンドの終了ステータスを配列で返します。

例1:

require "open3"

fname = "/usr/share/man/man1/ruby.1.gz"
p Open3.pipeline(["zcat", fname], "nroff -man", "less")
#=> [#<Process::Status: pid 11817 exit 0>,
#    #<Process::Status: pid 11820 exit 0>,
#    #<Process::Status: pid 11828 exit 0>]

例2:

require "open3"

Open3.pipeline([{"LANG"=>"C"}, "env"], ["grep", "LANG"], "less")

[SEE_ALSO] Open3.#popen3