zoukankan      html  css  js  c++  java
  • SHELL使用--if语句

    if语句

    if单分支

    if 条件1;then
        命令1
        命令2
        命令3
        。。。
    fi
    
    # 等同于:
    [ 条件1 ] && 命令1 
    

    示例1:

    • 检测硬盘根分区的使用率,如果大于70,就输出警告信息
    #!/bin/bash
    
    # 第一步:获取硬盘的使用率
    disk_use=`df | grep '/$' |awk '{print $5}' | cut -d% -f1`
    # 第二步:
    if [ $disk_use -gt 70 ];then
        echo "Warning:disk space is not enough"
    fi
    

    示例2:

    • 判断文件中是否存在root用户
    ===========================版本1===========================
    #!/bin/bash
    
    grep "^root" /etc/passwd &>/dev/null
    if [ $? -eq 0 ];then
        echo "Y"
    else
        echo "N"
    fi
    ===========================版本1===========================
    #!/bin/bash
    
    if grep "^root" /etc/passwd &>/dev/null;then
        echo "Y"
    else
        echo "N"
    fi
    

    if双分支

    if 条件1;then
        命令1
        命令2
        命令3
        。。。
    else
        命令1
        命令2
        命令3
        。。。 
    fi
    
    # 等同于:
    [ 条件1 ] && 命令1 || 命令2
    

    示例1:

    • 登录用户和密码匹配进行登录
    #!/bin/bash
    
    read -p "用户名>>: " name
    read -p "密码>>: " pass
    
    if [ $name == "egon" ] && [ $pass == "123" ];then
        echo "登录成功"
    else
        echo "账号或密码输入错误"
    fi
    
    

    if多分支

    if 条件1;then
        命令1
        命令2
        命令3
        。。。
    elif 条件2;then
        命令1
        命令2
        命令3
        。。。
    elif 条件2;then
        命令1
        命令2
        命令3
        。。。 
    ...
    else
        命令1
        命令2
        命令3
        。。。 
    fi
    

    示例1:

    • 获取硬盘根分区的使用率,根据比较输出不同级别的日志
    #!/bin/bash
    
    #1、获取硬盘根分区的使用率
    disk_use=`df | grep '/$' |awk '{print $5}' | cut -d% -f1`
    
    #2、根据比较输出不同级别的日志
    if [ $disk_use -ge 90 ];then  # >=90
        echo "Critical:disk space is full"
    elif [ $disk_use -ge 70 -a $disk_user -lt 90 ];then  # >=70 <90
        echo "Error:disk space will be full"
    elif [ $disk_use -ge 50 -a $disk_user -lt 70 ];then  # >=50 < 70
        echo "Warning:disk space is not enough"
    else
        echo "info:disk space is ok"
    fi
    
    
    ==============================改进===========================
    #!/bin/bash
    
    #1、获取硬盘根分区的使用率
    #disk_use=`df | grep '/$' |awk '{print $5}' | cut -d% -f1`
    #disk_use=99
    #disk_use=73
    #disk_use=53
    disk_use=30
    
    #2、根据比较输出不同级别的日志
    if [ $disk_use -ge 90 ];then  # >=90
        echo "Critical:disk space is full"
    elif [ $disk_use -ge 70 ];then  # >=70 <90
        echo "Error:disk space will be full"
    elif [ $disk_use -ge 50 ];then  # >=50 < 70
        echo "Warning:disk space is not enough"
    else
        echo "info:disk space is ok"
    fi
    

    示例2:

    • 数字猜大小
    #!/bin/bash
    # 首先判断这个值必须为一个值,并且为数字
    [ $# -ne 1 ] && echo "必须输入1个参数" && exit
    [[ ! $1 =~ ^[0-9]+$ ]] && echo "必须输入数字" && exit
     
    if [ $1 -gt 18 ];then
        echo "too big"
    elif [ $1 -lt 18 ];then
        echo "too small"
    else
        echo "you got it"
    fi
    

    示例3:

    • 判断文件类型
    #!/bin/bash
    # 首先判断这个值必须为一个参数
    [ $# -ne 1 ] && echo "必须输入1个参数" && exit
     
    if [ -L $1 ];then
        echo "是一个链接文件"
    elif [ -d $1 ];then
        echo "是一个目录文件"
    elif [ -f $1 ];then
        echo "是一个标准文件"
    else
        echo "其他类型的文件"
    fi
    

    示例4:

    • 启动服务脚本
    #!/bin/bash
    netstat -an | grep 'LISTEN' | grep '80' &>/dev/null
    if [ $? -eq 0 ];then
        echo "80端口的服务正常"
    else
        systemctl start httpd &>/dev/null
        if [ $? -eq 0 ];then
            echo "80端口启动成功"
        else
            echo "80端口启动失败"
        fi    
    fi
    

    示例5:

    • 监控脚本

    • 实现:

      根分区剩余空间小于10%
      内存的剩余空间小于30%
      向用户egon发送告警邮件,邮件的内容包含使用率相关信息

    #!/bin/bash
    
    # 1、获取根分区的剩余空间
    disk_use=`df | grep '/$' | awk '{print $5}' | cut -d% -f1`
    
    # 2、获取内存的剩余率
    mem_free=`free | grep 'Mem' |awk '{print $4}'`
    mem_total=`free | grep 'Mem' |awk '{print $2}'`
    mem_free_percent=`echo "scale=2;$mem_free / $mem_total" |bc |cut -d. -f2`
    
    # 3、判断+报警
    if [ $disk_use -gt 90 ];then
        echo "硬盘使用率${disk_use}%,不够用啦,请及时处理" | mail -s "磁盘报警" 18611453110@163.com
    fi
    
    if [ $mem_free_percent -lt 30 ];then
        echo "内存剩余率${mem_free_percent}%,不够用啦,请及时处理" | mail -s "内存报警" 18611453110@163.com
    fi
    
    ·# tell you一个小细节
    当经常对邮箱发送邮件容易被当成垃圾邮件直接发送至垃圾箱中,可以将主机名改为tcy.xxx.com这种格式
    
  • 相关阅读:
    WPF后台生成datatemplate(TreeViewItem例子)
    后台根据数据模版内的子控件获取使用该模版的控件
    逻辑代码实现拼音首字母检索
    自定义LISTBOX内子项为checkbox或者radio时,关于IsChecked绑定
    siliverlight某些事件无法响应
    页面内容不能铺满浏览器窗口的解决方法
    linux sort命令学习
    linux find命令学习
    linux tr命令学习
    linux cat命令学习
  • 原文地址:https://www.cnblogs.com/tcy1/p/13573591.html
Copyright © 2011-2022 走看看