存在するこの回答到着bashで「cat << EOF」はどのように機能しますか?Stack Overflowで最初の2点を獲得しました。しかし、3番目のポイントは理解できません。Bashのパイプに複数行の文字列を渡す
Bashのパイプに複数行の文字列を渡す
$ cat <<EOF | grep 'b' | tee b.txt foo bar baz EOF
3つの単語、2つのパイプ文字があるからです。それでは、どのように説明するのかわかりません。
ベストアンサー1
あなたの意見で判断すると、次のようになります。
最初のパイプ文字("|")が何をしているのかわかりません。
最初の|
文字は、の出力をcat
の入力に接続しますgrep
。<<
リダイレクト入力する;これと同様に、cat
完全に別々のリダイレクトです。<
cat <some_file | grep …
好むかもしれない<<EOF cat | grep 'b' | tee b.txt
(比較この回答)左から右に読み込むと、データフロー方式と厳密に一致するためです。ここのドキュメント→→→ 。cat
grep
tee
これらの操作はすべて、次のことなく実行できますcat
。
<<EOF grep 'b' | tee b.txt
foo
bar
baz
EOF
(またはgrep 'b' <<EOF | …
)。