.#!/bin/bash
set -x
su -oracle >>EON
lsnrctl start
sqlplus /nolog >>EOF
conn / as sysdba
startup
exit
EOF
exit
EON

 

 


 

我们经常在shell脚本程序中用<<EOF重定向输入,将我们输入的命令字符串作为一个执行程序的输入,这样,我们就不需要在那个程序环境中手工输入命令,以便自动执行我们需要的功能,例如:

 

[plain] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. sqlplus emssxjk/emssxjk <<EOF  
  2. select count(*) from sncn_yxyj where create_date like sysdate;  
  3. EOF  

 

 

其中的SQL语句相当于在sqlplus程序环境中输入的,这样输入的内容夹在两个EOF之间,可长可短,EOF也可以换成其他任意的字符,大小写不论,只要成对出现即可,例如:

 

[plain] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. sqlplus emssxjk/emssxjk <<STD  
  2. select count(*) from sncn_yxyj where create_date like sysdate;  
  3. STD  

当然这个标志性字符不能用保留字,最常用的还是EOF。

 

需要注意的是,第一个EOF必须以重定向字符<<开始,第二个EOF必须顶格写,否则会报错。

再看一个自动FTP的例子:

[plain] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. #ftp data to 10.178.37.244  
  2. rq=`date +%Y%m%d`  
  3. cd /data/product/song  
  4. ftp -i -n <<!  
  5. open 10.178.37.244   
  6. user oracle post   
  7. cd ems   
  8. bin  
  9. put ${rq}.dat   
  10. bye  
  11. !  


 
posted on 2016-12-12 11:21  小肉包  阅读(396)  评论(0编辑  收藏  举报