1. 程式人生 > >Shell中重定向EOF注意事項

Shell中重定向EOF注意事項

原文: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
    !