日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

here文档 here doc EOF重定向

發(fā)布時(shí)間:2023/12/13 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 here文档 here doc EOF重定向 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

here文檔? here doc EOF重定向

http://www.cnblogs.com/xiangzi888/archive/2012/03/24/2415077.html

?

在shell腳本程序中,向一條命令傳遞輸入的一種特殊方法是使用here文檔。一個(gè)here document就是一段帶有特殊目的的代碼段。它使用I/O重定向的形式將一個(gè)命令序列傳遞到一個(gè)交互程序或者命令中。它允許一條命令在獲得輸入數(shù)據(jù)時(shí)就好像是在讀取一個(gè)文件或鍵盤一樣,而實(shí)際是從腳本程序中得到輸入數(shù)據(jù)。格式:

COMMAND <<SpecialString
...
SpecialString
SpecialString用來界定命令序列的范圍,是一個(gè)特殊的字符序列,用來界定命令序列的范圍,可自定義,但不能出現(xiàn)在傳遞命令的文檔內(nèi)容中。
使用舉例:

1.使用cat打印多行消息,也可重定向哦(echo 有點(diǎn)麻煩了),同樣支持參數(shù)替換哦

cat <<EOF > /tmp/test this is here doc! date $HOME EOF this is here doc! date /home/xiangzi888

?

#重寫 cat > /tmp/a.txt<< EOF [client] port = $port socket = /data/mysql/mysql$port/tmp/mysql.sock [mysqld_safe] #malloc-lib= /usr/local/mysql/lib/mysql/libjemalloc.so EOF#追加 cat >> /tmp/a.txt<< EOF [client] port = $port socket = /data/mysql/mysql$port/tmp/mysql.sock [mysqld_safe] #malloc-lib= /usr/local/mysql/lib/mysql/libjemalloc.so EOF

?





2.設(shè)置變量

var=$(cat <<EOF content EOF )

?



3. 廣播: 將消息發(fā)送給每個(gè)登陸的用戶

wall <<HALT E-mail your noontime orders for pizza to the system administrator. # more messages # 注意: 'wall'命令會(huì)把注釋行也打印出來. HALT

?



4.帶有抑制tab功能的多行消息(去掉每行前面的TAB字符)

cat <<-EOF this is here doc! date doesn't work EOF

?



5.關(guān)閉變量替換的功能 ?

cat <<'EOF' $HOME doesn't work here! EOF

?



?


6.生成另外一個(gè)腳本(比較詭異!)

(cat <<'EOF' #!/bin/bash # Note that since we are inside a subshell, #+ we can't access variables in the "outside" script. echo "Generated file will be named: /tmp/script.sh" # Instead, the result is literal output. a=7 b=3 c=$(($a * $b)) echo "c = $c" exit 0 EOF ) > /tmp/script.sh

?



7.here doc與函數(shù)

#!/bin/bash #這個(gè)函數(shù)看起來就是一個(gè)交互函數(shù), 但是... GetPersonalData () {read firstnameread lastnameread address }# 給上邊的函數(shù)提供輸入. GetPersonalData <<DATA Robert Bozeman Hust DATA

?

?



8.‘匿名’here文檔,不顯示!(利用 : 可以注釋掉一段代碼塊,或者寫一個(gè)自文檔化(self-documenting)的腳本,詳見:http://www.tsnc.edu.cn/default/tsnc_wgrj/doc/abs-3.9.1_cn/html/here-docs.html)

#!/bin/bash # 如果其中某個(gè)變量沒被設(shè)置, 那么就打印錯(cuò)誤信息. : <<TESTVARIABLES ${HOSTNAME?}${USER?}${MAIL?} TESTVARIABLESexit 0

?

?



9.一些注意事項(xiàng)

a.某些工具是不能放入here document中運(yùn)行的。

b.結(jié)尾的limit string, 就是here document最后一行的limit string, 必須從第一個(gè)字符開始. 它的前面不能夠有任何前置的空白. 而在這個(gè)limit string后邊的空白也會(huì)引起異常. 空白將會(huì)阻止limit string的識(shí)別.
c.對(duì)于那些使用"here document", 并且非常復(fù)雜的任務(wù), 最好考慮使用expect腳本語言, 這種語言就是為了達(dá)到向交互程序添加輸入的目的而量身定做的.

?

?

?

?

f

轉(zhuǎn)載于:https://www.cnblogs.com/MYSQLZOUQI/p/7410968.html

總結(jié)

以上是生活随笔為你收集整理的here文档 here doc EOF重定向的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。