zoukankan      html  css  js  c++  java
  • 妈了个蛋,写了个炒鸡垃圾的脚本,也是醉了

    功能:实现工程名/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 "	"$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
    

    效果:

  • 相关阅读:
    jenkins--部署项目
    jenkins--创建项目
    jenkins--安全配置
    jenkins--工具配置
    jenkins--系统配置
    11.17
    11.14
    11.13
    dfs
    10.31
  • 原文地址:https://www.cnblogs.com/boucher/p/5766695.html
Copyright © 2011-2022 走看看