Bash

“cat << EOF | grep”如何在 bash 中工作?

  • January 1, 2022

這個回答“cat << EOF”如何在 bash 中工作?在 Stack Overflow 上,我得到了前兩點。但我沒有得到第三點將多行字元串傳遞到 Bash 中的管道

  1. 將多行字元串傳遞給 Bash 中的管道
 $ cat &lt;&lt;EOF | grep 'b' | tee b.txt
 foo
 bar
 baz
 EOF

因為它有 3 個單詞,2 個管道字元。然後我不知道如何解釋它。

從您的評論中:

我不確定第一個管道(“|”)字元是做什麼用的?

第一個|字元將 的輸出連接cat到 的輸入grep&lt;&lt;重定向輸入cat;_ 這是一個完全獨立的重定向,類似於&lt;in cat &lt;some_file | grep …

您可能更喜歡&lt;&lt;EOF cat | grep 'b' | tee b.txt(比較此答案),因為如果您從左到右閱讀此內容,那麼它將嚴格對應於數據的流動方式:此處為文件catgreptee

請注意,所有這些都可以在沒有的情況下完成cat

&lt;&lt;EOF grep 'b' | tee b.txt
foo
bar
baz
EOF

(或grep 'b' &lt;&lt;EOF | …)。

引用自:https://unix.stackexchange.com/questions/684523