Bash
“cat << EOF | grep”如何在 bash 中工作?
在這個回答“cat << EOF”如何在 bash 中工作?在 Stack Overflow 上,我得到了前兩點。但我沒有得到第三點將多行字元串傳遞到 Bash 中的管道
- 將多行字元串傳遞給 Bash 中的管道
$ cat <<EOF | grep 'b' | tee b.txt foo bar baz EOF
因為它有 3 個單詞,2 個管道字元。然後我不知道如何解釋它。
從您的評論中:
我不確定第一個管道(“|”)字元是做什麼用的?
第一個
|
字元將 的輸出連接cat
到 的輸入grep
。<<
重定向輸入cat
;_ 這是一個完全獨立的重定向,類似於<
incat <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 | …
)。