Linux Here Document 與 cat + EOF 的使用
cat
是日常中很常用到的指令,最近看到一個 cat + EOF
方式,於是想要寫篇文章來記錄一下使用方法。
Here Document
Here Doucment 在 Linux 中是一種特殊的重新導向方式,它的形式如下:
command << delimitercontentdelimiter
上面這個形式的意思就是將 delimiter 之間的內容,傳遞給 command
作為參數,以 cat
為範例:
當輸入 cat << EOF
時,會發現到可以繼續再輸入其他的資訊,當輸入完成後,再輸入一次 EOF 就會將輸入的訊息列印出來。
接下來透過這樣的方式,將輸入的內容寫入 shell script 內:
$ cat << EOF > hello.shecho 'Here Doucment Test!'EOF$ cat hello.sh# echo 'Here Doucment Test!'
如果你輸入的內容包含有變數的話,需要特別注意一下,延續上面的範例來進行另外一個實驗:
$ cat << EOF > hello.shecho 'Here Doucment Test!'echo $1echo $2EOF$ cat hello.sh 'Hey' 'Ho'# Here Document Test!##
結果沒有辦法印出我在 shell script 後所給的兩個參數,要解決這個情況必須在 EOF
前後加上「引號」:
$ cat << "EOF" > hello.shecho 'Here Doucment Test!'echo $1echo $2EOF$ cat hello.sh 'Hey' 'Ho'# Here Document Test!# Hey# Ho
這樣便可以成功印出變數囉!