linux脚本编程 比较,shell脚本-实现对比
发布日期:2022-02-18 13:19:56 浏览次数:10 分类:技术文章

本文共 2038 字,大约阅读时间需要 6 分钟。

最近我们项目在开展一个慈善活动,需要大家积极参与,去对拍品进行评价。老大派给了我一个任务就是每日11点进行统计,看看都有哪位兄弟姐妹没有按时去参与,然后进行一下统计;

其实需求很简单,就是通过UID执行sql语句,然后和统计的信息进行对比,找出不同就行。这个任务很简单,但是持续的时间很长,3个月的时间,想想总不能每日都手动去操作sql语句然后再拿到Excel中进行对比,找出不同,这种办法效率太低了。所以当收到3个月的持续时长时,第一就想到了通过脚本去执行。

一、Shell基本介绍

1、Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动,挂起,停止甚至编写一些程序。

(主要工作就是讲我们的语言翻译成内核可以执行的语言,也就是我们虚拟机书写命令的页面。)

2、Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令。

二、用到的一些基本语法

其实就是将输入或者输出结果放入自己想要指定的文件中,便于查看。比如一些定时执行的shell脚本都是凌晨执行,我们如何判定到时是否执行成功了呢?输入输出重定向则是其主要目的。

对此只讲述熟悉的输出重定向

1>正确命令保存

类型

符号

作用

命令>文件

以覆盖的方式输出到指定文件

命令>>文件

以追加的方式输出到制定文件

2>正确和错误命令同时保存

类型

符号

作用

保存到同一文件(覆盖)方法一

命令>文件2>&1

以覆盖的方式,都保存到同一文件

保存到同一文件(追加)方法一

命令>>文件2>&1

以追加的方式,都保存到同一文件

保存到同一文件(覆盖)方法二

命令&>文件

以覆盖的方式,都保存到同一文件

保存到同一文件(追加)方法二

命令&>>文件

以追加的方式,都保存到同一文件

保存到两个文件

命令>>文件1 2>>文件2

正确的命令到文件一,错误的命令到文件二

2、Bash变量

变量就是计算机内存单元,其中存放的值可以改变;变量名称可以由字母,数字,下划线组成,但是不能以数字开头;变量的默认类型都是字符串型,如果要进行数值运算,则必修指定变量类型为数值型。

分类:用户自定义变量;环境变量;位置参数变量;预定义变量;

3、正则表达式

1、 正则表达式与通配符的区别

正则是用来在文件中匹配符合条件的字符串,正则是包含匹配。grep,awk,sed,等命令可以支持正则表达式;

通配符用来匹配符合条件的文件名,通配符是完全匹配。ls,find,cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配了。(*,?,[])

2、基础正则表达式

元字符

说明

*

匹配0次或任意多次;比如匹配含有一个a字符的,那么执行语法则为:grep “aa*” test.txt

.

grep “s..d” test.txt 中间可以添加两个除换行符外的任意字符;注:”.*”匹配所有内容

^,$

^匹配行首

[]

匹配中括号中制定的任意字符

[^]

和[]恰好相反,匹配除中号号中符号之外的任意字符

{n}

表示其前面的字符恰好出现n次

{n,}

表示其前面的字符出现不小于n次

{n,m}

表示匹配其前面的字符至少出现n次,最多出现m次

对于功能而言,最重要的还得需要自己去实践,去融入,再此则只是展现了自己能够用到的部分基础。

三、功能实践

功能很简单,步骤一:查询sql,获取对应UID;步骤二:将对应UID和本地信息进行对比找出不同;步骤三:将不同的UID对应的名称展示出来

查询信息脚本:

#脚本标识

#!/bin/bash

#将两个文件上次执行的内容清除

>diff.txt

>HUOHUO.txt

#数据库密码

PASS='J6yrwhCoSyzEtbZm'

#连接MysqL,注:执行此语句,虚拟机必须存有MysqL客户端

echo "select uid from kupai.user_wallet_log_0 where activity_id=$1 and type=3 and status=1" | MysqL -h 10.106.135.3 -P 3002 -u kupaiuser -p$PASS > HUOHUO.txt

#对比,将不同输出到diff.txt中

grep -vwf HUOHUO.txt people.txt |tr '\r' ' ' > diff.txt

对比名称输出脚本:

#脚本标识

#!/bin/bash

#循环对比输出

cat diff.txt |while read line;

do

#echo $line

grep "$line" peopleName.txt --color

done

最后展示效果图则是UID和名称一一对应输出,格式自己可以定义。以上则是自己的脚本简单实现。

转载地址:https://blog.csdn.net/weixin_28926205/article/details/116792906 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:linux群晖系统密码忘记,【系统篇】猫盘群晖重置密码、重装、重置、升级与降级等...
下一篇:PHP区块链钱包跨链支付,区块链电子钱包系统跨链多币种钱包开发

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年03月28日 20时06分49秒