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

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

效果:

时间: 2024-10-17 15:23:56

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

哪个蠢蛋写的烂代码?

最近看到一个问题,叫做「你们会因为代码烂,而入职两三天选择离职吗?」. 其实早先有过一些关于代码质量的讨论,比如「关于烂代码的那些事」,「程序员的日常:哪个蠢蛋写的烂代码?」,「你的代码写的很烂」.这让很多程序员感受到共鸣,大家纷纷出来吐槽. 大家都在抱怨同事的代码写的烂,前同事遗留下来的代码bug多...... 那问题来了,写这些烂代码的人都去哪了? 好奇怪哎! 遗憾的是,你既可能是那个吐槽别人给你留下了麻烦,也可能是别人嘴里那个制造麻烦的人. 非常有幸,我在维护一些历史超过10年,历经无数代

把ps -ef &amp; kill指令写成可以自动执行的shell脚本

之前重启服务器上的服务,均是先使用ps -ef | grep xxx指令查询出PID,然后再使用kill -9 PID指令杀死进程.由于重启的服务只止一个,每次都要重复输入,甚是麻烦. 示例 今天研究了一下,把以上手动查杀.重启服务的过程写成了shell脚本,重启服务只需执行脚本就可以了.附脚本样例: 1 #!/bin/sh 2 3 # restart das-web 4 ps -ef | grep /home/***/das-web/ | awk '{print $2}' | xargs -n

写一个杀死Gradle Daemon的shell脚本和bat脚本

1. Gradle Daemon也就是Gradle守护进程 Gradle需要运行在一个Java虚拟机中,每一次执行gradle命令就意味着一个新的Java虚拟机被启动,然后加载Gradle类和库,最后执行构建.这样,构建起来会花费大量的时间在Java虚拟机的启动与关闭. 通过Gradle 守护进程,只需要启动一次Java虚拟机,之后就可以再利用,无需再次重启Java虚拟机.这样就达到缩短构建时间的目的. 2. Java虚拟机,每存在一个main函数就会新创建一个jvm,也就是说一台机器上可以创建

NBUT 1576 炒鸡想减肥的字符串

借鉴了  nenu_xlp  的思想: 先把'a'到'a'+m-1的字符找到,在将其中的序号最大的减去最小的,在不断更新每个字母对应的序号,重复之前的步骤比较的出最小的结果.. #include<stdio.h> #include<string.h> #include<math.h> #include<iostream> using namespace std; int t[27]; char s[1005]; int q[27]; int b,c; int

啊啊啊啊啊啊啊今天就写,炒鸡简单 数据库Sqlite的创建,库的增删改查

啦啦啦啦啦啦啦 写这个不用多长时间,我直接写代码注释都是些语句,Sql语句和Api来操作数据库 ,语句的参数我会注释 SQLite数据库创建数据库需要使用的api:SQLiteOpenHelper必须定义一个构造方法: //arg1:数据库文件的名字 //arg2:游标工厂 //arg3:数据库版本 public MyOpenHelper(Context context, String name, CursorFactory factory, int version){ }//数据库被创建时会调

用 C 语言和 nkCEngine 写了一个基于命令的迷你脚本编译器与脚本播放器

首先,博主感到非常高兴,就在很久以前,博主就想写一个属于自己的脚本引擎,哪怕功能再简单也好,只要能跑起来就行了,直到今天,博主终于向这个梦想迈出了第一步,将脚本引擎的雏形给做了出来,因为这个脚本系统属于 nkCEngine 的一部分,所以博主将其命名为 nkScript,nkScript 是一门基于命令的语言,没有复杂的函数调用,没有复杂的循环语句,它拥有的,是简单的数值运算语句.条件跳转语句.无条件跳转语句.命令语句,等等:nkScript 的开发目标主要是用于制作简单的文字冒险游戏,就是那种

如何写出《黄焖鸡米饭是怎么火起来的》这样的文章

去年开始研究做爬虫,搞了一套分布式的爬虫系统,主要目标是帮别人做数据采集.后来看到黄焖鸡米饭是怎么火起来的? - 何明科的回答,进而关注了<数据冰山>,发现里面的大数据分析的文章都相当有意思,图表也一个比一个专业. 我当时的表情大约是这样的: 我的天哪,这么神奇吗? 放下手机,操起键盘,正准备也搞上一篇 "大数据分析:郭德纲和女演员的相爱相杀之后,wuli涛涛是如何火起来的".后来转念一想,这不是赤果果的抄袭了,妈妈是怎么教导我的.再说了,以我这样的实力,写了这样的文章,以

执行系统命令并且将输出写到指定日志文件的shell脚本(2)

上一篇是个简单的可以执行并且写入日志的脚本,但是如果放到生产环境上就显得太粗糙了,所以需要进一步的优化: #! /bin/bash if [ -d "/opt/bmc" ] ; then if [ -f "/opt/bmc/usysfault.log" ] ; then { date +"%Y-%m-%d %H:%M:%S" /usr/lpp/diagnostics/bin/usysfault #要执行的命令的绝对路径 } > /opt/b

自己写一个破解zip加密文件的脚本

前言:因为要参加一个作品赛,而且要写一个PPT来介绍一下自己的作品,自己写的PPT丑的一批,所以就想到网上找一些模板.开启度娘模式,搜索PPT模板,找到百度云分享,开心,下载,下载之后懵X了,TMD还有密码这能忍.....度娘一波破解zip文件的软件(O(∩_∩)O刚开始还没想者自己写,有现成的谁不用呀)下载之后发现竟然还要付费,wcnmlgjb当我们劳动人人民是傻子呀!这么没有技术含量的东西还要付费.md自己动手丰衣足食! zipfile的官方文档 https://docs.python.or