码迷,mamicode.com
首页 > 其他好文 > 详细

妈了个蛋,写了个炒鸡垃圾的脚本,也是醉了

时间:2016-08-12 23:28:23      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:

功能:实现工程名/src/main/resources/online和  工程名/src/main/resources/performance下的配置文件的比较(后者比前者缺失哪些配置文件,后者比前者缺失哪些配置项)

代码:

#!/bin/bash
# by wuboxiao

rm -rf checkConfig.diff checkConfig.error checkConfig.result linenum.txt checkConfig.res
files=`find $1/src/main/resources/online -name "*.properties"`
#feflag:是否存在配置文件缺失的标志
feflag=0
#fdifftflag:文件存在差异时的首行提示文字“缺失的配置项检查结果:”是否存在的标志
fdifftflag=0
for i in $files;do
    checkFile=${i/online/"$2"}
    checkFileName=${checkFile##*/}
    if [ ! -f $checkFile ];then
       feflag=1
       echo -e "    "$checkFileName 1>> checkConfig.error
       continue
    fi
    diff $i $checkFile 1>> checkConfig.result
    if [ $? -eq 0 ];then
       #两个文件完全一致
       continue
    elif [ $? -eq 1 ];then 
       #结果为1代表两个配置文件有差异
       if [ $fdifftflag -eq 0 ];then
          echo "缺失的配置项检查结果:" 1>> checkConfig.diff
          fdifftflag=1
       fi
       fdiflag=0
       cat $i | grep -v "^#" | grep -v "^$" |  while read line
       do 
           key=$(echo $line | sed -e ‘s/\(.*\)=\(.*\)/\1/g‘)
           key_find=$( grep  "$key=\(.*\)" $checkFile | sed -e ‘s/\(.*\)=\(.*\)/\1/g‘)
           if [ -z "$key_find" ];then
              if [ $fdiflag -eq 0 ];then 
		 echo -e $checkFileName 1>>checkConfig.diff
                 fdiflag=1
              fi    
              echo -e "\t"$key 1>>checkConfig.diff
           fi
       done
    fi
done
lostfilenum=$(cat checkConfig.error | wc -l)
echo -e "\e[1;31m"$2"缺少"$lostfilenum"个配置文件\e[0m"
echo -e "  \c"
filelines=1
if [ $lostfilenum -ne 0 ];then
#   echo -e "配置文件:\c"
   cat checkConfig.error | while read line
   do 
      if [ $filelines -eq "$lostfilenum" ];then
         echo -e $line
         break
      fi
      echo -e $line"、\c"
      ((filelines++))
   done
fi
echo ""
chkfilelines=$(cat checkConfig.diff | wc -l)
#echo "缺失配置项为"$chkfilelines"个"
alllostitem=$(grep -v ‘.properties‘ checkConfig.diff | wc -l)
sed -i ‘1s/^.*/‘"$2"‘缺少‘"$((alllostitem-1))"‘个配置项/g‘ checkConfig.diff
echo -e "\e[1;31m"$2"缺少"$((alllostitem-1))"个配置项\e[0m" 1>> checkConfig.res
if [ $chkfilelines -eq 1 ];then
   echo "    无配置项缺失" 1>> checkConfig.diff
   cat checkConfig.diff
else 
   linecnt=1
   cat checkConfig.diff | awk ‘NR>1‘ | while read line
   do
     result=$(echo $line | grep "properties" )
     ((linecnt++))
     if [ ! "$result"x == ""x ];then 
         echo $linecnt 1>>linenum.txt
     fi
   done
   echo $((chkfilelines+1)) 1>>linenum.txt
   start=$(cat linenum.txt | awk ‘NR==1‘)
   cat linenum.txt | awk ‘NR>1‘ | while read  end
   do
      sed -i "$start"‘s/$/&缺少‘"$((end-start-1))"‘个配置项/g‘ checkConfig.diff
      awk ‘NR==‘"$start" checkConfig.diff 1>>checkConfig.res
      linecount=1
      echo -e "  \c" 1>>checkConfig.res
      awk ‘NR>‘"$start"‘ && NR<‘"$end" checkConfig.diff | while read eachline
      do
        if [ $linecount -lt $((end-start-1)) ];then
           echo -e $eachline"、\c" 1>>checkConfig.res
        else
           echo -e $eachline 1>>checkConfig.res
        fi
        ((linecount++))
      done
      start=$end
      echo "" 1>>checkConfig.res
   done
   
fi
#cat checkConfig.diff
cat checkConfig.res
rm -rf check.result checkConfig.diff checkConfig.error linenum.txt checkConfig.res

效果:

技术分享

 

妈了个蛋,写了个炒鸡垃圾的脚本,也是醉了

标签:

原文地址:http://www.cnblogs.com/boucher/p/5766695.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!