日期:2014-05-16  浏览次数:20779 次

shell脚本求解
#Setup JOB_HOME
JOB_HOME=/oracle/app/oracle/product/10.2.0/job/

#SQL File
var_sql_file="`echo $1`.sql"
var_log_file="`echo $1`.log"
echo "exec `echo $1`;" > $JOB_HOME$var_sql_file
echo "exit;" >> $JOB_HOME$var_sql_file
#EXEC procedure
echo "*******************************`date +%Y/%m/%d' '%H:%M:%S`******************************" >>$JOB_HOME$var_log_file
sqlplus inter/fjcms789inter @$JOB_HOME$var_sql_file >>$JOB_HOME$var_log_file
rm $JOB_HOME$var_sql_file



——---------------------------------------------
求高手详解以上shell脚本

------解决方案--------------------
var_sql_file="`echo $1`.sql" --$1表示SHELL脚本的第1个参数,看下面的代码,这第1个参数,应该是个SQL语句,var_sql_file是个sql文件名
var_log_file="`echo $1`.log" --var_log_file是运行时生成的日志名,$1的值+.log
echo "exec `echo $1`;" > $JOB_HOME$var_sql_file --执行做为第1个参数输入的SQL语句,执行的内容写到$JOB_HOME路径下的$var_sql_file 文件中;
echo "exit;" >> $JOB_HOME$var_sql_file --把exit;也写到$var_sql_file 文件中
#EXEC procedure
echo "*******************************`date +%Y/%m/%d' '%H:%M:%S`******************************" >>$JOB_HOME$var_log_file --把执行的时间记录到log文件中
sqlplus inter/fjcms789inter @$JOB_HOME$var_sql_file >>$JOB_HOME$var_log_file --连接数据库,执行var_sql_file 文件中的SQL语句
rm $JOB_HOME$var_sql_file --执行之后,把var_sql_file 文件删除。


------解决方案--------------------
这基本上是一个执行你输入的参数用的脚本
这是负值语句
JOB_HOME=/oracle/app/oracle/product/10.2.0/job/

#SQL File 注释
#负值 显示 输入的第一个参数.sql到var_sql_file
var_sql_file="`echo $1`.sql" 
同理
var_log_file="`echo $1`.log"
创建文件并把exec 输入的第一个参数写入文件中
echo "exec `echo $1`;" > $JOB_HOME$var_sql_file

把EXIT;追加到文件后
echo "exit;" >> $JOB_HOME$var_sql_file

注释
#EXEC procedure

把这一个显示时间的行插入到日志文件中
echo "*******************************`date +%Y/%m/%d' '%H:%M:%S`******************************" >>$JOB_HOME$var_log_file

启动SQLPLUS并使用运行这个$JOB_HOME$var_sql_file脚本文件
sqlplus inter/fjcms789inter @$JOB_HOME$var_sql_file >>$JOB_HOME$var_log_file

删除脚本文件
rm $JOB_HOME$var_sql_file