シェル置換処理

 

そして、コマンド置換プロセスは非常に似ています。あるいはコマンドがある別の変数に割り当てられたコマンドの出力、例えば、dir_files=`ls -l`又はdate_time=$(date)プロセスの代替は、ある別の(グループ)コマンドにコマンドの出力を渡します

0.shellプロセス置換の使用

書き込み 意味 注意点 自然
<(コマンド)

これは、入力のリダイレクトする手段、その出力は、別のコマンドの入力として使用することができます

コマンドリストは、複数のセミコロンが命令するコマンドのセットです;分離しました。なお、<または>括弧の間にスペースはありません 別のコマンド入力としての/ dev / FD / N文書受付(コマンド)出力、
>(コマンド)

これは、別のコマンドの出力標準を受け入れるために、出力のリダイレクトの意味します

(コマンド)を入力としては/ dev / FD / Nファイルからの読み取り

交換するプロセスを使用する1.必要

李のために 結果 説明

ノーマルモード

  1. エコー  "AAAAA"  読み取りAA
  2. エコー  $ AA
出力は空です

親シェルでエコーコマンド、及びリードコマンドが内のサブシェルで実行されるシェルが破壊されたリード実行部分の端部は、AA変数が消え、。

パイプラインコマンドは常にサブシェルで実行され、変数に割り当てた値に任意のコマンドは、この問題に満たされます。

使用プロセス置換

  1. AAを読ん<(エコー  "AAAAA"
  2. エコー  $ AA
出力はAAAAAであります 全体的に、シェルのecho "aaaaa"出力結果は、入力として読み取られます。<()、エコーコマンドの出力をキャプチャするために使用します<読み取るために結果をリダイレクトします。

二つのことを注意<最初の間の空間では、<入力のリダイレクトを表し、第二<()一緒になって置換処理を表します。

コマンドを読み、第2のエコーコマンドは現在のシェルプロセスで実行、現在のプロセス変数のAAに保存され、データを読み、成功したエコー出力を使用することが可能です。

交換するために使用されるプロセスの例では、「標準入力を受け付けます」

エコー "qpy">>(読み;エコー "你好、$ REPLY")

実行結果:こんにちは、qpy そのため、リダイレクトを使用することで、からコマンドを読んでecho "qpy"、読み出しデータの出力。

プロセスの性質を置き換え2.

異なるプロセス間でデータを転送できるようにするために、実際には、交換のプロセスは、システム・ファイルと関連付ける、このファイルの名前である/dev/fd/n(nは整数)。ファイルが引数として渡された()コマンド、()コマンドは、読み取りまたはファイルへの書き込みが置換処理のフォーマットに依存することである<まだ>

  • もしそうなら>()、そのファイルが得られます()入力を提供するためのコマンドを、出力リダイレクションでは、どのような入力すると、他のコマンドから来るかもしれません。
  • yesの場合<()、そのファイルは、受信()コマンドの出力を、入力のリダイレクトを経由して、ファイルの内容が入力他のコマンドとして使用することができます。


対応するファイル名を置き換えるプロセスを表示するechoコマンドを使用します。

コマンド 輸出 説明

エコー>(真)

/ dev / fdを/ 63

/dev/fd/数字の多くは、プロセスは、一般的に内部ファイルシステムである63のファイルを置き換えるために使用され、我々は一般的にはあまり見、ディレクトリのファイルにあります。

/dev/fd/63リダイレクトで、データ転送ファイルやデータブリッジでの役割を果たし、それはなり>()内部コマンドと外部コマンドは、データがこれらのコマンド間を流れることができるようにリンク。

エコー<(真)

/ dev / fdを/ 63

エコー>(真)<(真)

/ dev / fdを/ 63の/ dev / fdを/ 62

エコー "qpy">>(読み;エコー "こんにちは、$ REPLY")

こんにちは、qpy

まず、>第1のエコーコマンドの結果を出力する出力リダイレクションは、にリダイレクトさ表す/dev/fd/63ファイル。

>()リードからのコマンド/dev/fd/63中读取内容次に読み出し、及びコンテンツのエコーにリードコマンドを出力します。



おすすめ

転載: www.cnblogs.com/ting152/p/12554501.html