博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
我的第一个shell程序
阅读量:7027 次
发布时间:2019-06-28

本文共 5958 字,大约阅读时间需要 19 分钟。

初学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=====================================
       # 收付费库名
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&nbsp</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&nbsp</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 "请在内部网 ,数据服务栏目“信息技术部”目录下载数据!"
    echo " "
    echo "您此次提取数据的文件名为:实收实付.$COMCODE.$XZDM.$XBDM.$STARTDATE-$ENDDATE.xls"
==========================head.unl==================================
字段名1|字段名2|字段名3|......|
   本文转自ipist 51CTO博客,原文链接:http://blog.51cto.com/ipist/11119
,如需转载请自行联系原作者
你可能感兴趣的文章
磁盘清理无法删除DUMP文件手工删
查看>>
译著《Fedora和Red Hat Enterprise Linux实用指南(第6版)》即将上市,敬请关注!
查看>>
Java线程:创建与启动
查看>>
彻底学会使用epoll(五)—— ET模式下的注意事项
查看>>
认识.net
查看>>
UNIX和Linux Shell正则表达式语法介绍
查看>>
[Web开发] xenocode 推出浏览器沙盘,无需安装直接运行各种浏览器
查看>>
WFQ加权公平队列(每个队列的计算原则与权重比关系)加权效果后转发取证
查看>>
SCCM 2007系列4 播发操作系统上
查看>>
存储时间:从Symmetrix V-Max看高端存储的未来
查看>>
安装vSphere5玩了玩
查看>>
让开源解读“甲骨文”--RHEL5.3部署安装Oracle Database10g Release2
查看>>
javascript围观IE10中window对象的结构
查看>>
Linux系统性能分析工具-操作篇
查看>>
WF基础知识问答
查看>>
DDos攻击篇
查看>>
.Net开发笔记(八) 动态编译
查看>>
《Linux内核设计与实现》读书笔记 - 目录 (完结)
查看>>
ES配置文件中文版
查看>>
Windows下一个并发阻塞队列(BlockingQueue)
查看>>