test条件测试与if、case分支

前言

在基础简单的Shell脚本程序中,各种不同命令语句按照先后顺序依次执行,从而实现批处理的自动化过程,Shell编程中的if条件语句和可循环,分支的case语句可以轻松灵活的完成复杂,管理任务。

一、条件测试

1.条件测试命令

test命令:测试表达式是否成立,若成立返回0,否则返回其他数值
     格式:
         格式1: test   条件表达式
         格式2:[  条件表达式  ]

2.文件测试

格式:[  操作符   文件或目录  ]

常用的测试操作符
在这里插入图片描述

示例:
在这里插入图片描述

3.常用的测试操作符

3.1 条件测试操作

 用于逻辑测试,格式为:
         · [  表达式1  ]操作符[ 表达式2 ].....
         · 命令1   操作符    命令2.......

在这里插入图片描述
3.2 整数值比较

比较的格式为:[  整数1  操作符   整数2   ]    

常用的测试操作符
在这里插入图片描述

示例:
条件测试与整数值的比较结合
在这里插入图片描述

4.字符串的比较

格式为:
     格式1:[ 字符串1 = 字符串2 ]
     格式2:[ 字符串1 != 字符串2  ]
     格式3:[  -z 字符串  ]  

``

在这里插入图片描述

举例:
在这里插入图片描述

二、if语句

1.单分支结构

 if   条件测试操作
    then    命令序号
 fi

举例:

1.针对目录模拟

[root@server2 ~]# vi mkdir.sh
[root@server2 ~]# chmod +x mkdir.sh
[root@server2 ~]# ./mkdir.sh
[root@server2 ~]# ls -R /a
[root@server2 ~]# cd /
[root@server2 /]# ls -lh

vi mkdir.sh       #进入mkdir目录编辑脚本
#!/bin/bash       查看目录是否存在,不存在就创建目录
# 创建目录
dir="/a/b"    做判断是否存在
if [ ! -d $dir ]  
then mkdir -p $dir
fi

在这里插入图片描述

2.针对用户模拟

[root@server2 ~]# echo $USER    
root
[root@server2 ~]# su zjq
[zjq@server2 root]$ sudo vi a.sh
[zjq@server2 root]$ sudo chmod +x a.sh
[zjq@server2 root]$ sudo ./a/sh


#!/bin/bash
# 判断当前用户是否为root       查看当前用户是否是root,不是报错
if [ ! “$USER=  “root” ]
then echo "当前用户不是root"
fi

在这里插入图片描述
在这里插入图片描述

2.双分支结构

 格式: 
        if     条件测试操作                             if     端口号是否在监听
               then    命令序列1         →                   then   网站服务已在运行
               else    命令序列2                             else    启动httpd服务 
        fi                                            fi                                    

在这里插入图片描述

示例1:
在这里插入图片描述

示例2:

在这里插入图片描述

3.多分支结构

格式: 
     if     条件测试操作1
             then    命令序列1
     elif   条件测试操作2
              then     命令序列2
     else
               命令序号3
      fi

在这里插入图片描述

示例:
在这里插入图片描述

4.提取性能监控指标项目(磁盘占用,CPU使用,内存使用)

1.磁盘占用情况

[root@server2 ~]# df -Th
[root@server2 ~]# df -Th | grep "/$"
[root@server2 ~]# df -Th | grep "/$" | awk '{print $6}'
[root@server2 ~]# df -Th | grep "/$" | awk '{print $6}' | awk -F% '{print $1}'
[root@server2 ~]# disk=$( df -Th | grep "/$" | awk '{print $6}' | awk -F% '{print $1}')
[root@server2 ~]# [ $disk -gt 10 ] && echo "too less."
[root@server2 ~]# [ $disk -lt 10 ] && echo "too less."

在这里插入图片描述
2.内存占用情况

[root@server2 ~]# free
[root@server2 ~]# free | grep "Mem:" | awk '{print $3}'
[root@server2 ~]# free | grep "Mem:" | awk '{print $2}'
[root@server2 ~]# expr $(free | grep "Mem:" | awk '{print $3}') / $(free | grep "Mem:" | awk '{print $2}')
[root@server2 ~]# expr $(free | grep "Mem:" | awk '{print $3}') \* 100 / $(free | grep "Mem:" | awk '{print $2}')
[root@server2 ~]# echo $(expr $(free | grep "Mem:" | awk '{print $3}') \* 100 / $(free | grep "Mem:" | awk '{print $2}'))
[root@server2 ~]# mem=$(expr $(free | grep "Mem:" | awk '{print $3}') \* 100 / $(free | grep "Mem:" | awk '{print $2}'))

在这里插入图片描述
3.CPU占用率

[root@server2 ~]# mpstat
[root@server2 ~]# mpstat | tail -1 | awk '{print $12}'
[root@server2 ~]# mpstat | tail -1 | awk '{print $12}' | awk -F. '{print $1}'
[root@server2 ~]# expr 100 - $( mpstat | tail -1 | awk '{print $12}' | awk -F. '{print $1}')

在这里插入图片描述

4.准备配置数据

disk=$( df -Th | grep "/$" | awk '{print $6}' | awk -F% '{print $1}')     
mem=$(expr $(free | grep "Mem:" | awk '{print $3}') \* 100 / $(free | grep "Mem:" | awk '{print $2}'))
cpu=$(expr 100 - $( mpstat | tail -1 | awk '{print $12}' | awk -F. '{print $1}'))
if [ $disk -ge 85 ] then echo "磁盘占有率超过85%"
if [ $mem -ge 90 ] then echo "内存占有率超过90%"
if [ $cpu -ge 90 ] then echo "cpu占有率超过90%"

5.发送警报邮件

root@server2 ~]# rpm -qa mailx   查看是否安装程序
[root@server2 ~]# vi /etc/mail.rc   配置文件
[root@server2 ~]# echo "123456" | mail -s "test" 1609325444@qq.com
发送邮件,内容:123456

添加修改:
set from=1609325444@qq.com  发送邮箱地址
set smtp=smtp.qq.com       邮箱使用的smtp服务器的域名
set smtp-auth-user=1609325444@qq.com  smtp邮件发送时登录的账号
set smtp-auth-password=........    授权码
set smtp-auth=login           smtp的状态,登录状态

在这里插入图片描述
6.查看是否可以上网,发送邮件
登录邮箱查看邮件

在这里插入图片描述

7.进行报警文件测试

[root@server2 ~]# vim alert.sh    
[root@server2 ~]# chmod +x alert.sh
[root@server2 ~]# ./alert.sh

在这里插入图片描述
8.进入邮箱看出报警信息
在这里插入图片描述

// An highlighted block
var foo = 'bar';
// An highlighted block
var foo = 'bar';
// An highlighted block
var foo = 'bar';

三、case语句

1.case多分支结构

 case  变量值 in                           case 分数  in
模式1)                                   85-100)
命令序列1                                 判为优秀
  ;;                                        ; ;
模式2)               →                   70-84)
命令序列2                                  判为合格
  ; ;                                       ; ;
....                                      ......
*)                                       *)
默认命令序列                               判为不合格
esac                                      esac

在这里插入图片描述
示例:

1.用case判断字符

[root@server2 ~]# vi character.sh
[root@server2 ~]# chmod +x case.sh
[root@server2 ~]# ./character.sh


#!/bin/bash
# 判断输入的字符是哪种类型
read -p "请输入一个字符并按enter回车确认" key
case "$key" in
    [a-z]|[A-Z])                   匹配 a-z 字母
         echo "您输入的是字母."    
      ;;
    [0-9])                            匹配 0-9 数字
         echo "您输入的是数字."
      ;;     
     *)                                  匹配任意字符 
         echo "您输入的是空格,功能键,其它控制字符." 
exit 1
esac

2.使用case判断成绩

[root@server2 ~]# vi score.sh
[root@server2 ~]# chmod +x score.sh
[root@server2 ~]# ./score.sh

#!/bin/bash
# 成绩输入判断
read -p "成绩:" b
case "$b" in
     100)
      echo "满分"
   ;;
   9[0-9])
      echo "优秀"
   ;;
  8[0-9])
      echo "良"
   ;;
  7[0-9])
      echo "良好"
   ;;
  6[0-9])
      echo "合格"
   ;;
   *)
      echo "不及格"
esac

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值