これ以上説明せずに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ですか?)。