Shell中重定向EOF注意事項
阿新 • • 發佈:2018-11-09
原文:https://blog.csdn.net/iamlaosong/article/details/40509399
我們經常在shell指令碼程式中用<<EOF重定向輸入,將我們輸入的命令字串作為一個執行程式的輸入,這樣,我們就不需要在那個程式環境中手工輸入命令,以便自動執行我們需要的功能,例如:
sqlplus emssxjk/emssxjk <<EOF
select count(*) from sncn_yxyj where create_date like sysdate;
EOF
其中的SQL語句相當於在sqlplus程式環境中輸入的,這樣輸入的內容夾在兩個EOF之間,可長可短,EOF也可以換成其他任意的字元,大小寫不論,只要成對出現即可,例如:
sqlplus emssxjk/emssxjk <<STD
select count(*) from sncn_yxyj where create_date like sysdate;
STD
當然這個標誌性字元不能用保留字,最常用的還是EOF。
需要注意的是,第一個EOF必須以重定向字元<<開始,第二個EOF必須頂格寫,否則會報錯。
再看一個自動FTP的例子:
#ftp data to 10.178.37.244 rq=`date +%Y%m%d` cd /data/product/song ftp -i -n <<! open 10.178.37.244 user oracle post cd ems bin put ${rq}.dat bye !