您的位置:首页 > 运维架构 > Shell

我的第一个shell程序

2006-11-30 22:41 351 查看
初学SHELL,

==========================main.sh======================================
GSDM=0000 # 市公司代码
clear
while true
do
echo "请输入出单机构代码(格式为:0000**;前6位;如:000003)"
read MAKECOM
if [ "$MAKECOM" <> '' ] && [ `expr length $MAKECOM` = "6" ]
then
if [ `expr substr $MAKECOM 1 4` = $GSDM ]
then
break
else
echo "错误的出单机构代码,请重输!"
fi
else
echo "错误的出单机构代码,请重输!"
fi
done
while true
do
echo "请输入业务归属机构代码(格式为:0000**;前6位;如:000003)"
read COMCODE
if [ "$COMCODE" <> '' ] && [ `expr length $COMCODE` = "6" ]
then
if [ `expr substr $COMCODE 1 4` = $GSDM ]
then
break
else
echo "错误的业务归属代码,请重输!"
fi
else
echo "错误的业务归属代码,请重输!"
fi
done
while true
do
echo "请输入险种代码(格式为:D/P/A,车险/非车险,A代表全部)"
read XZDM
if [ "$XZDM" = "D" ] && [ `expr length $XZDM` = "1" ]
then CLASSESCODE=" classescode[1,1] = 'D' " ;
break
else
if [ "$XZDM" = "P" ] && [ `expr length $XZDM` = "1" ]
then CLASSESCODE=" classescode[1,1] <> 'D' " ;
break
else
if [ "$XZDM" = "A" ] [ `expr length $XZDM` = "1" ]
then CLASSESCODE=" classescode <> '' " ;
break
else
echo "错误的险种代码,请重输!"
fi
fi
fi
done
while true
do
echo "请输入险别代码(格式为:S/J/A,商业险/交强险,A代表全部)"
read XBDM
if [ "$XBDM" = "S" ] && [ `expr length $XBDM` = "1" ]
then KINDCODE_R=" ('R21','R30') " ;KINDCODE_P=" ('P10','P30') " ;
break
else
if [ "$XBDM" = "J" ] && [ `expr length $XBDM` = "1" ]
then KINDCODE_R=" ('R29','R39') " ;KINDCODE_P=" ('P19','P39') " ;
break
else
if [ "$XBDM" = "A" ] && [ `expr length $XBDM` = "1" ]
then KINDCODE_R=" ('R21','R30','R29','R39') " ;KINDCODE_P=" ('P10','P30','P19','P39') " ;
break
else
echo "错误的险别代码,请重输!"
fi
fi
fi
done
while true
do
echo "请输入收付起始日期(格式为:YYYYMMDD;如:20060101)"
read STARTDATE
if [ `expr substr $STARTDATE 1 3` = "200" ] && [ `expr length $STARTDATE` = "8" ]
then break
else
echo "错误的日期,请重输!"
fi
done
while true
do
echo "请输入收付终止日期(格式为:YYYYMMDD;如:20060101)"
read ENDDATE
if [ `expr substr $ENDDATE 1 3` = "200" ] && [ `expr length $ENDDATE` = "8" ]
then break
else
echo "错误的日期,请重输!"
fi
done
clear
echo " "
echo "出单机构代码(格式为:0000**;前6位;如:000003): " $MAKECOM
echo " "
echo "业务归属机构代码(格式为:0000**;前6位;如:000003): " $COMCODE
echo " "
echo "险种代码(格式为:D/P/A,车险/非车险,A代表全部): " $XZDM
echo " "
echo "险别代码(格式为:S/J/A,商业险/交强险,A代表全部): " $XBDM
echo " "
echo "收付起始日期(格式为:YYYYMMDD;如:20060101): " $STARTDATE
echo " "
echo "收付终止日期(格式为:YYYYMMDD;如:20060101): " $ENDDATE
echo " "
echo " "
echo " "
echo "以上输入是否正确(Y/N)? 若按 Y ,开始提数;否则中断退出。"
read YESORNO
if [ "$YESORNO" = "Y" ] || [ "$YESORNO" = "y" ]
then
clear ; echo " " ;
echo "正在生成数据,请稍候..."
sh cmd.sh "$MAKECOM" "$COMCODE" "$XZDM" "$XBDM" "$STARTDATE" "$ENDDATE" "$CLASSESCODE" "$KINDCODE_R" "$KINDCODE_P"
else
break
fi
read KEYPUT
if [ "$KEYPUT" <> "" ]
then exit
else exit
fi

=============================cmd.sh=====================================
SFFDB=sffdb@server # 收付费库名
GSDM=0000 # 市公司代码
FTPIP=192.168.0.1 # ftp 登录 IP 地址
FTPUSER=test # ftp 登录用户名
FTPPASS=test # ftp 登录密码
MAKECOM=$1
COMCODE=$2
XZDM=$3
XBDM=$4
STARTDATE=$5
ENDDATE=$6
CLASSESCODE=$7
KINDCODE_R=$8
KINDCODE_P=$9
echo " "
echo $MAKECOM $COMCODE $XZDM $XBDM $STARTDATE $ENDDATE $SFFDB $GSDM
echo " "
isql $SFFDB - <<! 0>>sssf.$COMCODE.log 1>>sssf1.$COMCODE.log 2>>sssf2.$COMCODE.log
unload to "sff_r.$COMCODE.$XZDM.$XBDM.$STARTDATE-$ENDDATE.unl"
select
policyno,classescode,rateamount,kindcode,departcode[1,6],acceptopname,deskdate,documentno,insurant
from $SFFDB:sf02
where ksdm[1,6] = "$MAKECOM"
and departcode[1,6] = "$COMCODE"
and kindcode in $KINDCODE_R
and $CLASSESCODE
and procflag in ("Y","F")
and deskdate >= "$STARTDATE" and deskdate <= "$ENDDATE"
order by deskdate,policyno,kindcode ;
unload to "sff_p.$COMCODE.$XZDM.$XBDM.$STARTDATE-$ENDDATE.unl"
select
policyno,classescode,-rateamount,kindcode,departcode[1,6],acceptopname,deskdate,documentno,insurant
from $SFFDB:sf02
where ksdm[1,6] = "$MAKECOM"
and departcode[1,6] = "$COMCODE"
and kindcode in $KINDCODE_P
and $CLASSESCODE
and procflag in ("Y","F")
and deskdate >= "$STARTDATE" and deskdate <= "$ENDDATE"
order by deskdate,policyno,kindcode ;
!
cat head.unl sff_r.$COMCODE.$XZDM.$XBDM.$STARTDATE-$ENDDATE.unl sff_p.$COMCODE.$XZDM.$XBDM.$STARTDATE-$ENDDATE.unl > sff.$COMCODE.$XZDM.$XBDM.$STARTDATE-$ENDDATE.unl
rm sff_r.$COMCODE.$XZDM.$XBDM.$STARTDATE-$ENDDATE.unl sff_p.$COMCODE.$XZDM.$XBDM.$STARTDATE-$ENDDATE.unl
toHtml() {
awk < sff.$COMCODE.$XZDM.$XBDM.$STARTDATE-$ENDDATE.unl '
BEGIN{
FS="|"
title=sprintf("%s","'$title'")
printf("<HTML>\n")
printf("<HEAD>\n")
print "<meta http-equiv=Content-Type content=\"text/html; charset=gb2312\">"
printf("<TITLE> %s (%s %s年%s月)</TITLE>\n",title,"'$gsname'","'$yyyy'","'$mm'")
print "<style>"
print "<!--"
print "th {font-size:16px}"
print "td {font-size:14px}"
print "-->"
print "</style>"
printf("</HEAD>\n")
printf("<BODY><TABLE border=\"1\" align=\"center\" bordercolorlight=\"#FC9C0C\">\n")
}

{ for (m=1;m<=NF-1;m++) {
if(m==1) {
printf(" <TR align=\"right\" valign=\"middle\">\n")
printf(" <TD align=\"left\" nowrap>%s </TD>\n",$m)
}
else
{
if($m==0) printf(" <TD>0</TD>\n")
else
if(m==3) printf(" <TD align=\"right\" nowrap>%s</TD>\n",$m)
else
printf(" <TD align=\"left\" nowrap>%s </TD>\n",$m)
}
if(m==NF-1) printf(" </TR>\n\n") }
}
END {
print "</TABLE>"
print "</BODY>"
print "</HTML>"
}
'
}

toHtml sff.$COMCODE.$XZDM.$XBDM.$STARTDATE-$ENDDATE.unl > sff.$COMCODE.$XZDM.$XBDM.$STARTDATE-$ENDDATE.xls
rm sff.$COMCODE.$XZDM.$XBDM.$STARTDATE-$ENDDATE.unl
echo "数据生成完毕!"
echo " "
echo "正在向市公司内部网传送数据,请稍候..."
ftp -n $FTPIP <<!
user $FTPUSER $FTPPASS
cd $COMCODE/信息技术部
bin
bin
put sff.$COMCODE.$XZDM.$XBDM.$STARTDATE-$ENDDATE.xls 实收实付.$COMCODE.$XZDM.$XBDM.$STARTDATE-$ENDDATE.xls
pwd
dir 实收实付.$COMCODE.$XZDM.$XBDM.$STARTDATE-$ENDDATE.xls
by
!
rm sff.$COMCODE.$XZDM.$XBDM.$STARTDATE-$ENDDATE.xls
echo " "
echo "数据提取结束,并已传至市公司内部网;"
echo " "
echo "请在内部网http://$FTPIP,数据服务栏目“信息技术部”目录下载数据!"
echo " "
echo "您此次提取数据的文件名为:实收实付.$COMCODE.$XZDM.$XBDM.$STARTDATE-$ENDDATE.xls"
==========================head.unl==================================
字段名1|字段名2|字段名3|......|
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  职场 休闲