求教一段shell

tang 2006-03-10 09:56:43
下面是夜间处理的一段代码,请解释以下
主要是这几段看不懂
PROC=$1
echo ${PROC}
..
exec ${PROC}(:pOUT);
quit :pOUT;
EOF
整段代码:
#! /usr/bin/sh
#
# $Id$
# $Log$

# import Environment file for oracle
. `dirname $0`/disap_env

# import Environment file for NIS-Mail
. `dirname $0`/nis_env

# write your process below this line.

PROC=$1
echo ${PROC}
sqlplus ***/**@oracle <<EOF
set serveroutput on;
var pOUT number;
exec :pOUT := 1;
exec ${PROC}(:pOUT);
quit :pOUT;
EOF

STATUS=$?

if [ ${STATUS} -ne 0 ]
then
路径/errmail.sh ${PROC}
exit 1
fi

exit 0

...全文
80 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
bobfang 2006-03-15
  • 打赏
  • 举报
回复
sqlplus ... <<EOF
这一句表示执行sqlplus,并且sqlplus的输入就是本脚本下面的内容,直到"EOF"这行
quit :pout;
表示退出sqlplus,并将pout参数(前面通过var pout定义的)的值做为sqlplus的退出码。
STATUS=$?
表示取上一个shell命令的返回码(上一个命令就是sqlplus)
if [ ${STATUS} -ne 0 ]
是判断STATUS变量(实际上就是sqlplus的返回码)是否不为0
开发者开聊 2006-03-10
  • 打赏
  • 举报
回复
PROC=$1 //把这段shell的第一个参数赋值给PROC,看样子像一个procedure的名字
echo ${PROC} //打印proc也就是第一个参数的值
..
exec ${PROC}(:pOUT); //sqlplus中执行Procedure,名字为{PROC} :pout估计为参数,看样子为输出参数
quit :pOUT; //退出sqlplus
EOF
tang 2006-03-10
  • 打赏
  • 举报
回复
最后两句
quit :pout; --这是固定格式么?exit行么?:pout在这一行有什么用么?
EOF又是什么意思(也是格式么?)
还有下面的这个发送报错邮件的也不知到是怎么实现的,
最好一句句的注释以下,谢谢了

STATUS=$?
if [ ${STATUS} -ne 0 ]
then
路径/errmail.sh ${PROC}
exit 1
fi
exit 0

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧