Shell 流程控制-if 语句

  1. 单分支if条件语句

    if [ 条件判断式 ] ; then
    程序
    fi

    例子:判断分区使用率

    技术分享
    #!/bin/bash
    # Author: huangrui (Email:[email protected])
     
    rate=$(df -h | grep "sda1" | awk {print $5} | cut -f 1 -d "%")
     
    if [ $rate -gt 80 ]; then
       echo "Warning! disk is full !!!"
    fi
    Code
  2. 双分支if条件语句
    if [ 条件判断式 ] ; then
    条件执行成立时,执行的语句
    else
    条件执行不成立,执行的语句
    fi

    例子:备份网站目录文件

    技术分享
    #!/bin/bash
    # Author huangrui (Email:[email protected])
     
    date=$(date +%y%m%d)
    size=$(du -sh /home/test.com)
     
    if [ -d /home/test.com ];then
        echo "date is :$date" > /tmp/dbback/db.txt
        echo "size is :$size" >> /tmp/dbback/db.txt
        cd /tmp/dbback
        tar -zcf web_$date.tar.gz /home/test.com db.txt&>/dev/null
        rm -rf /tmp/dbback/db.txt
    else
        mkdir /tmp/dbback
        echo "date is :$date" > /tmp/dbback/db.txt
        echo "size is :$size" >> /tmp/dbback/db.txt
        cd /tmp/dbback
        tar -zcf web_$date.tar.gz /home/test.com db.txt&>/dev/null
        rm -rf /tmp/dbback/db.txt
    fi
    Code

    判断apache是否启动,使用nmap命令

    技术分享
    #!/bin/bash
    # Author huangrui (Email:[email protected])
     
    port=$(nmap -sT 172.16.193.128 | grep tcp | grep http | awk {print $2})
     
    if [ "$port" == "open" ]; then
       echo "$(date) httpd is ok!" >> /tmp/autostart-acc.log
    else
       /etc/rc.d/init.d/httpd restart &>/dev/null
       echo "$(date) httpd is restart!!" >> /tmp/autostart-err.log
    fi
    Code
  3. 多分支if条件语句
    if [ 条件判断1 ]; then
    当条件判断式1成立时,执行程序1
    elif [ 条件判断式2 ]; then
    当条件判断式2成立时,执行程序2
    …省略更多条件…
    else
    当所有条件都不成立,最后执行此程序
    fi

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。