bash はサブシェルコマンド stdout、<<<(command)、<<(command) をリダイレクトします。

bash はサブシェルコマンド stdout、<<<(command)、<<(command) をリダイレクトします。

これ以上説明せずにcommand < <(command)代わりに使用することをお勧めします。command <<< $(command)動作しますが、理解できません。誰かがこれについて詳しく説明してもらえますか?

後者の場合、括弧内の(コマンド)がサブシェルのコマンドを実行すると思います。標準出力は$()でキャプチャされます。最後に、<<<はそれを「file here」に親シェルのコマンドの標準入力にリダイレクトします。

対照的に、前の構成は、最初のファイルの内容を<親シェルの標準入力にリダイレクトします。括弧はサブシェルで(コマンド)を実行します。したがって、「<(コマンド)」はサブシェルの標準出力をファイルとして保存します。それともこれはどのように機能しますか?

ベストアンサー1

<<<ここに文字列があります。ここにある文書に似ています。次の単語<<<と改行がコマンドの標準入力に渡されます。構文:(command <<< "some sentence"に似ていますecho "some sentence" | commandが、サブシェルのオーバーヘッドはありません)


コマンドの置き換え:"$(cmd "foo bar")""cmd"コマンドは "foo bar"引数で実行され、"$(..)"出力に置き換えられます。バラよりhttp://mywiki.wooledge.org/BashFAQ/002そしてhttp://mywiki.wooledge.org/CommandSubstitution


手続き型置換:<(command)orはorエントリ>(command)で置き換えられます。デフォルトでは、名前付きパイプを設定する略語です。バラよりFIFO/dev/fd/*http://mywiki.wooledge.org/ProcessSubstitution例:diff -u <(sort file1) <(sort file2)


command < <(othercommand)othercommand | command#と同じですがサブシェルなし「注文する」。プロセス置換(<())で生成されたファイルをリダイレクトするには、ファイルリダイレクト(<)を使用します。あいまいさを避けるために、<と<(..)の間のスペースは重要です(区切り文書かリダイレクトPSですか?)。

おすすめ記事