流程控制语句场景示例

1. 使用root用户清空/var/log/messages日志。要保留这个日志的最后100行。

1. 判断当前执行脚本的用户是否是root用户,普通用户没有权限执行该脚本

2. 判断该日志文件是否存在

3. 保留这个日志最近的100行内容

#第一种方法

[root@shell /scripts]# cat if-10.sh

#!/bin/bash

#1.判断当前执行脚本的用户是否是root用户

if [ "$USER" == "root" -a $UID -eq 0 ];then

    #2.判断/var/log/messages文件是否存在

    if [ -f /var/log/messages ];then

        #保留该日志的最近100行内容

        tail -100 /var/log/messages >/var/log/messages.bak &&  mv -f /var/log/messages.bak  /var/log/messages

        if [ $? -eq 0 ];then

            echo "日志清空成功!最近100行内容也保存成功!"

        else

            echo "日志清空失败!最近100行内容也保存失败!"

        fi

    else

        echo "/var/log/messages 文件不存在!"

        exit

    fi

else

    echo "当前用户$USER 不是超级管理员,没有权限执行该脚本。"

fi


[root@shell /scripts]# wc -l /var/log/messages

1113 /var/log/messages

[root@shell /scripts]# mv /var/log/messages /var/log/messages.txt

[root@shell /scripts]# sh if-10.sh

/var/log/messages 文件不存在!

[root@shell /scripts]# mv /var/log/messages.txt /var/log/messages

[root@shell /scripts]#

[root@shell /scripts]# sh if-10.sh

日志清空成功!最近100行内容也保存成功!

[root@shell /scripts]# wc -l /var/log/messages

100 /var/log/messages

#第二种方法,不要使用if里面套if

2. 判断一个服务是否正常启动  sshd

1. 怎么判断一个服务是否正常启动  通过运行状态判断

2. 判断这个服务的端口号是否存在

3. 判断这个服务的进程是否存在

[root@shell /scripts]# cat if-11.sh

#!/bin/bash

#1.判断服务是否在运行状态

Server_Status=$(systemctl  status  $1 | awk '/Active/{print $2}')

#2.根据变量值的状态进行判断

if [ "$Server_Status" == "active" ];then

    echo "服务$1 在运行中.....状态为:${Server_Status}....."

else

    echo "服务$1 不在运行中....状态为:${Server_Status}....."

fi

#3.判断服务名称是否是mariadb

if [ "$1" == "mariadb" ];then

    Server=mysqld

else

    Server=$1

fi

netstat  -lntp| grep $Server &>/dev/null

if [ $? -eq 0 ];then

    echo "服务$1 端口号存在........"

else

    echo "服务$1 端口号不存在......"

fi

#5.判断服务的进程是否存在

ps aux | grep $1 |grep -Ev "grep|pts" &>/dev/null

#6.根据返回值的结果进行判断

if [ $? -eq 0 ];then

    echo "服务$1 进程存在......."

else

    echo "服务$1 进程不存在....."

fi

#第二种

[root@shell /scripts]# cat if-11.sh

#!/bin/bash

#1.判断服务是否在运行状态

Server_Status=$(systemctl  status  $1 | awk '/Active/{print $2}')

#2.根据变量值的状态进行判断

if [ "$Server_Status" == "active" ];then

    echo "服务$1 在运行中.....状态为:${Server_Status}....."

else

    echo "服务$1 不在运行中....状态为:${Server_Status}....."

fi

#3.判断服务名称是否是mariadb

if [ "$1" == "mariadb" ];then

    netstat  -lntp| grep mysqld &>/dev/null

    #4.根据返回值进行判断结果

    if [ $? -eq 0 ];then

        echo "服务mariadb 端口号存在........"

    else

        echo "服务mariadb 端口号不存在......"

    fi

else

    netstat  -lntp| grep $1 &>/dev/null

    if [ $? -eq 0 ];then

        echo "服务$1 端口号存在........"

    else

        echo "服务$1 端口号不存在......"

    fi

fi

#5.判断服务的进程是否存在

ps aux | grep $1 |grep -Ev "grep|pts" &>/dev/null

#6.根据返回值的结果进行判断

if [ $? -eq 0 ];then

    echo "服务$1 进程存在......."

else

    echo "服务$1 进程不存在....."

fi

3. 根据不同的操作系统版本进行安装yum源

[root@shell /scripts]# cat if-12.sh

#!/bin/bash

#1.定义变量,定义版本

Version=$(awk '{print $(NF-1)}' /etc/redhat-release)

#2.根据操作系统的版本号进行判断

if [ ${Version%%.*} -eq 7 ];then

    echo "当前操作系统版本为7系列......"

    #3.测试当前系统的网络连通情况

    ping -c1 -W1 www.baidu.com &>/dev/null

    #4.根据测试网络的返回值进行判断

    if [ $? -ne 0 ];then

        echo "当前系统的网络不可达!不能进行下载更新Yum仓库!"

        exit

    else

        echo "移除旧的Yum仓库................"

        rm -f /etc/yum.repos.d/* && echo "旧的Yum仓库移除完毕!" || echo "旧的Yum仓库移除失败!"

        echo "开始更新下载Yum仓库Base源............"

        curl -s -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo &>/dev/null && echo "Yum仓库的Base源更新成功!" || echo "Yum仓库的Base源更新失败!"

        echo "开始更新下载Yum仓库Epel源............"

        curl -s -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo &>/dev/null && echo "Yum仓库的Epel源更新成功!" || echo "Yum仓库的Epel源更新失败!"

        echo "当前操作系统7系列的Yum源更新下载完毕!"

        exit

    fi

elif [ ${Version%%.*} -eq 6 ];then

    echo "当前操作系统版本为6系列......"

    #5.测试当前系统的网络连通情况

    ping -c1 -W1 www.baidu.com &>/dev/null

    #6.根据测试网络的返回值进行判断

    if [ $? -ne 0 ];then

        echo "当前系统的网络不可达!不能进行下载更新Yum仓库!"

        exit

    else

        echo "移除旧的Yum仓库................"

        rm -f /etc/yum.repos.d/* && echo "旧的Yum仓库移除完毕!" || echo "旧的Yum仓库移除失败!"

        echo "开始更新下载Yum仓库Base源............"

        curl -s -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo &>/dev/null && echo "Yum仓库的Base源更新成功!" || echo "Yum仓库的Base源更新失败!"

        echo "开始更新下载Yum仓库Epel源............"

        curl -s -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo &>/dev/null && echo "Yum仓库的Epel源更新成功!" || echo "Yum仓库的Epel源更新失败!"

        echo "当前操作系统6系列的Yum源更新下载完毕!"

        exit

    fi

else

    echo "当前操作系统的版本目前不支持下载更新Yum源。"

fi

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容