shell中的Here Document
目錄
1、什么是Here Document
注意事項
2、cat + << here結合創建文件
3、Here Document的變形
(3.1)HERE中的變量
(3.2)<<?變為 <<-
4、參考鏈接
1、什么是Here Document
Here Document 是在Linux Shell 中的一種特殊的重定向方式,它的基本的形式如下
cmd << HEREDocument Content #一段信息HERE它的作用就是將兩個?HERE之間的內容(Here Document Content?部分) 傳遞給cmd 作為輸入參數。其中HERE相當于標記,可以是任何的字符串。
比如在終端中輸入cat << EOF?,系統會提示繼續進行輸入,輸入多行信息再輸入EOF后,兩個EOF之間輸入的信息將輸出到標準輸出,這里是終端。如下:
$ cat << HERE> First Line> Second Line> Third Line > HEREFirst LineSecond LineThird Line注:?>這個符號是終端產生的提示輸入信息的標識符
注意事項
2、cat + << here結合創建文件
Here Document 與cat命令結合,可用于創建一個新的文件,這個是cat命令非常常用的用法。
使用格式:
cat << HERE > filenameDocument Content #一段信息HERE作用:HERE之間輸入的信息將不回輸出到標準輸出,而是重定位到filename文件中,如果filename文件不存在,則會先創建此文件,再輸入內容。
同時,上述命令可以在終端上直接使用,也可以在shell 腳本中使用,例如下面的here.sh 文件
cat << HERE > output.shecho "hello"echo "world"HERE使用 sh here.sh?命令運行這個腳本文件,會得到output.sh 這個新文件,里面的內容如下:
echo "hello"echo "world"注意:“cat << HERE > filename” 中的 > 符號,表示的是覆蓋式的寫入,會將文件之中內容先刪除再寫入;如果想要追加式的寫入,需要換成 >> 符號,格式:“cat << HERE >> filename”? 。
關于cat 與Here Document的結合使用,可以參考博客:《linux下cat命令詳解》
3、Here Document的變形
(3.1)HERE中的變量
在Here Document 的內容中,不僅可以包括普通的字符,還可以在里面使用變量,例如將上面的here.sh 改為
cat << HERE > output.shecho "This is output"echo $1HERE運行命令:sh here.sh HereDocument?,然后查看output.sh的內容如下:
echo "This is output"echo HereDocument,因為,HereDocument是here.sh腳本的第一個參數,可以直接用shell中的特殊變量?$1表示,$1?被展開成為?HereDocument。
注意:如果不想HERE之間的變量自動展開,而是以字符串的形式正常輸出,可以通過在起始的 HERE 的前后添加冒號?"?來實現,例如將上面的here.sh 改為
?
cat << "EOF" > output.shecho "This is output"echo $1EOF?
得到的output.sh 的內容為??????:
echo "This is output"echo $1(3.2)<<?變為 <<-
Here Document 還有一個用法就是將 '<<' 變為 '<<-'。
使用?<<-?的唯一變化就是Here Document 的內容部分每行前面的 tab (制表符)將會被刪除掉,這種用法是為了編寫Here Document的時候可以將內容部分進行縮進,方便閱讀代碼。如:
cat <<- EOF > output.shecho "This is output"echo $1EOF得到的output.sh 的內容為??????:
echo "This is output"echo $1但是如果使用的是?<<,那么output.sh 的內容會變為:
echo "hello"echo "world"echo 之前的tab 不會被刪除!
4、參考鏈接
Wiki: Here Document
Learn Linux, 101: Streams, pipes, and redirects
本文主要參考了一下文章,并進行相關修改:
https://my.oschina.net/u/1032146/blog/146941#OSC_h3_3
?
總結
以上是生活随笔為你收集整理的shell中的Here Document的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux shel的学习网站(推荐)
- 下一篇: 驱动编程中的头文件与内核源码的关系