shell 使用diff 命令对比文件 并发送邮件

 1 #!bin/bash
 2 
 3 kettleConfigHome=/home/vmuser/linbo/kettleDemo/job/config
 4 apiInfos=/home/vmuser/linbo/kettleDemo/job/data/apiInfo
 5 pfile=/home/vmuser/linbo/kettleDemo/job/practiceSH/profiles
 6 api_csv_path_home=/home/vmuser/linbo/test_upload/data_file
 7 sendMailData=/home/vmuser/linbo/kettleDemo/job/sendData
 8 dtm=`date +"%Y-%m-%d %H:%M:%S"`
 9 dt=`date +"%Y%m%d"`
10 lastDay=`date -d "1 day ago" +"%Y%m%d"`
11 echo "lastDay=${lastDay}"
12 
13 ls $api_csv_path_home  >$apiInfos/apiName.txt
14 ## 判断有多少接口需要进行文件对比,有几行就说明有几个接口
15 apiCnt=$(cat ${apiInfos}/apiName.txt  | wc -l)
16 echo "****************共计有  $apiCnt 个api接口需要进行csv文件对比!*******************"
17 for((i=1;i<=apiCnt ;i++)); 
18 do 
19     sendMail=false ;
20 
21     cd $pfile 
22     apiName=`cat $apiInfos/apiName.txt |sed -n "${i}p"`
23     echo "${i}_apiName=$apiName"    
24     rm -rf $apiInfos/${lastDay}_${apiName}_csvList.txt
25 
26     cd $api_csv_path_home/$apiName/prod
27     ls |grep ${dt}. >$apiInfos/${dt}_${apiName}_csvList.txt
28     # 今天生成的csv文件个数
29     lineCnt=$(awk 'END{print NR}' $apiInfos/${dt}_${apiName}_csvList.txt)
30     if [[ ${lineCnt} == 0 ]]; then 
31         
32     echo "**************** lineCnt=$lineCnt 今天没有生成文件 不需要对比 continue ! ***************"
33         continue     
34     fi    
35     echo "#修改邮件主题 topic=$apiName "
36     cd $kettleConfigHome
37     sed -i "s#^topic=.*#topic=${dt}_$apiName#g" ./sandMailVariate.properties
38 
39 
40     for((j=1;j<=$lineCnt;j++));
41     do 
42         apiCsvPath=${api_csv_path_home}/${apiName}
43         prod_csvName=`cat  $apiInfos/${dt}_${apiName}_csvList.txt |sed -n "${j}p"`
44         uat_csvName=uat_$prod_csvName
45         echo "${i}_${j}_prod_csvName=$prod_csvName"
46         echo "${i}_${j}_uat_csvName=$uat_csvName"
47 
48         diff $apiCsvPath/prod/${prod_csvName} $apiCsvPath/test/${uat_csvName} >$sendMailData/difflog/${prod_csvName%.*}_diff_${dt}.log
49         flags=`cat $sendMailData/difflog/${prod_csvName%.*}_diff_${dt}.log |wc -l`
50         echo "flags=${flags}"
51         if [[ $flags != 0 ]]; then 
52             echo "删除上一天的发送容  rm -rf ${sendMailData}/${apiName}/${lastDay} "
53             rm -rf ${sendMailData}/${apiName}/${lastDay}
54             echo "创建 ${sendMailData}/${apiName}/${dt}/${prod_csvName%.*} 目录"
55             mkdir -p ${sendMailData}/${apiName}/${dt}/${prod_csvName%.*}
56             echo "将日志移动到 $sendMailData/${apiName}/${dt}/${prod_csvName%.*}目录下 "
57             mv $sendMailData/difflog/${prod_csvName%.*}_diff_${dt}.log $sendMailData/${apiName}/${dt}/${prod_csvName%.*}
58             echo "将 ${prod_csvName} 和 ${uat_csvName} 文件cp 到 $sendMailData/${apiName}/${dt}/${prod_csvName%.*} 目录下 "
59             cp $apiCsvPath/prod/${prod_csvName} $sendMailData/${apiName}/$dt/${prod_csvName%.*}
60             cp $apiCsvPath/test/${uat_csvName} $sendMailData/${apiName}/$dt/${prod_csvName%.*}
61             echo "修改配置 发送邮件的时候 将该路径下的内容作为附件 发送出去 !"
62             sed -i "s#^attachment_filePath=.*#attachment_filePath=//home//vmuser//linbo//kettleDemo//job//sendData//${apiName}//${dt}#g" $kettleConfigHome/sandMailVariate.properties
63     
64             echo "--------修改发送邮件标志--------"
65             sendMail=true 
66         fi
67 
68     done 
69 echo "sendMail=$sendMail"
70 
71     if [[ $sendMail == true ]]; then 
72 
73         echo "********************************发送邮件********************************"
74     sh /home/vmuser/linbo/kettleDemo/job/kjb/execSendMail.sh
75     fi
76 
77 
78 
79 done
原文地址:https://www.cnblogs.com/linbo3168/p/14154061.html