「シェルスクリプトの基礎 - 入出力」の版間の差分

ナビゲーションに移動 検索に移動
554行目: 554行目:
  > HOGE HOGE
  > HOGE HOGE
<br>
<br>
プロセス置換に使用するコマンドは、単一のコマンドのみではなく、<br>
プロセス置換に使用するコマンドは、単一のコマンドのみではなく、セミコロン区切りの複数コマンド、パイプやネストしたプロセス置換も指定可能である。<br>
セミコロン区切りの複数コマンド、パイプやネストしたプロセス置換も指定可能である。<br>
<br>
以下の例では、diffコマンドを使用して、2つの入力ストリームの差分を表示している。<br>
# echo "aaa"; echo "bbb"
#: まず、aaaとbbbという2行からなる入力ストリームを生成する。
# < (echo "aaa"; echo "bbb")
#: 上記の2行の入力ストリームになる。
#: <はdiffコマンドへのリダイレクトを意味しており、この入力ストリームをdiffの最初の入力として使用する。
# cat <(echo "aaa") | cat <(echo "BBB")
#: <()はプロセス置換を意味する。
#: つまり、括弧内のコマンドの出力をファイルのように扱うことができる。
#: echo "aaa"の出力をcatに渡して、さらに、echo "BBB"の出力をcatに渡して、2つの出力を連結している。
#: 結果として、aaaとBBBという2行のストリームができる。
# echo "ccc"
#: cccという1行のテキストを生成する。
# < (cat <(echo "aaa") | cat <(echo "BBB"); echo "ccc")
#: この括弧内では、上記3.と4.を組み合わせて、aaa、BBB、cccの3行からなるストリームを生成している。
#: そして、<でこのストリームをdiffコマンドの2番目の入力としてリダイレクトしている。
<br>
したがって、このコマンド全体では、aaaとbbbの2行からなるストリームと、aaa、BBB、cccの3行からなるストリームの差分をdiffコマンドで表示している。<br>
  # 実行
  # 実行
  diff < (echo "aaa"; echo "bbb") < (cat <(echo "aaa") | cat <(echo "BBB"); echo "ccc")
  diff < (echo "aaa"; echo "bbb") < (cat <(echo "aaa") | cat <(echo "BBB"); echo "ccc")

案内メニュー