当前位置: 首页 > news >正文

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

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

效果:

 

转载于:https://www.cnblogs.com/boucher/p/5766695.html

相关文章:

  • 性能优化之道】每秒上万并发下的Spring Cloud参数优化实战
  • PostgreSQL 的命令行psql和数据交互
  • 设计模式---代理模式
  • PostgreSQL之高级数据选择
  • PostgreSQL 的数据定义
  • iOS - TouchID 指纹识别
  • PostgreSQL 事务和锁
  • PostgreSQL的函数、存储过程和触发器
  • PostgreSQL实战(1)允许远程连接
  • Phoenix官方教程 (五) 控制器
  • PostgreSQL实战(12)高级特性
  • base64图上上传保存到服务器
  • ajax报错302重定向错误
  • ArcGIS Engine开发之旅03--ArcGIS Engine中的控件
  • kafka消费过程中失败,kafka重试补偿
  • CSS 三角实现
  • eclipse(luna)创建web工程
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • go append函数以及写入
  • Hibernate最全面试题
  • Linux快速复制或删除大量小文件
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • php中curl和soap方式请求服务超时问题
  • React Transition Group -- Transition 组件
  • Redash本地开发环境搭建
  • Redis中的lru算法实现
  • REST架构的思考
  • Sublime Text 2/3 绑定Eclipse快捷键
  • 不上全站https的网站你们就等着被恶心死吧
  • 当SetTimeout遇到了字符串
  • 高程读书笔记 第六章 面向对象程序设计
  • 将回调地狱按在地上摩擦的Promise
  • 让你的分享飞起来——极光推出社会化分享组件
  • 少走弯路,给Java 1~5 年程序员的建议
  • 深入浅出Node.js
  • 收藏好这篇,别再只说“数据劫持”了
  • 走向全栈之MongoDB的使用
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • #传输# #传输数据判断#
  • (0)Nginx 功能特性
  • (04)odoo视图操作
  • (13):Silverlight 2 数据与通信之WebRequest
  • (day 12)JavaScript学习笔记(数组3)
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (转)shell调试方法
  • ***通过什么方式***网吧
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .NET Core 和 .NET Framework 中的 MEF2
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .NET Standard 的管理策略
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .net 设置默认首页