流程控制語句場景示例

1. 使用root用戶清空/var/log/messages日志。要保留這個日志的最后100行。

1. 判斷當前執(zhí)行腳本的用戶是否是root用戶,普通用戶沒有權限執(zhí)行該腳本

2. 判斷該日志文件是否存在

3. 保留這個日志最近的100行內容

#第一種方法

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

#!/bin/bash

#1.判斷當前執(zhí)行腳本的用戶是否是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 不是超級管理員,沒有權限執(zhí)行該腳本。"

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. 怎么判斷一個服務是否正常啟動? 通過運行狀態(tài)判斷

2. 判斷這個服務的端口號是否存在

3. 判斷這個服務的進程是否存在

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

#!/bin/bash

#1.判斷服務是否在運行狀態(tài)

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

#2.根據(jù)變量值的狀態(tài)進行判斷

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

? ? echo "服務$1 在運行中.....狀態(tài)為:${Server_Status}....."

else

? ? echo "服務$1 不在運行中....狀態(tài)為:${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.根據(jù)返回值的結果進行判斷

if [ $? -eq 0 ];then

? ? echo "服務$1 進程存在......."

else

? ? echo "服務$1 進程不存在....."

fi

#第二種

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

#!/bin/bash

#1.判斷服務是否在運行狀態(tài)

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

#2.根據(jù)變量值的狀態(tài)進行判斷

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

? ? echo "服務$1 在運行中.....狀態(tài)為:${Server_Status}....."

else

? ? echo "服務$1 不在運行中....狀態(tài)為:${Server_Status}....."

fi

#3.判斷服務名稱是否是mariadb

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

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

? ? #4.根據(jù)返回值進行判斷結果

? ? 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.根據(jù)返回值的結果進行判斷

if [ $? -eq 0 ];then

? ? echo "服務$1 進程存在......."

else

? ? echo "服務$1 進程不存在....."

fi

3. 根據(jù)不同的操作系統(tǒng)版本進行安裝yum源

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

#!/bin/bash

#1.定義變量,定義版本

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

#2.根據(jù)操作系統(tǒng)的版本號進行判斷

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

? ? echo "當前操作系統(tǒng)版本為7系列......"

? ? #3.測試當前系統(tǒng)的網(wǎng)絡連通情況

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

? ? #4.根據(jù)測試網(wǎng)絡的返回值進行判斷

? ? if [ $? -ne 0 ];then

? ? ? ? echo "當前系統(tǒng)的網(wǎng)絡不可達!不能進行下載更新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 "當前操作系統(tǒng)7系列的Yum源更新下載完畢!"

? ? ? ? exit

? ? fi

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

? ? echo "當前操作系統(tǒng)版本為6系列......"

? ? #5.測試當前系統(tǒng)的網(wǎng)絡連通情況

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

? ? #6.根據(jù)測試網(wǎng)絡的返回值進行判斷

? ? if [ $? -ne 0 ];then

? ? ? ? echo "當前系統(tǒng)的網(wǎng)絡不可達!不能進行下載更新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 "當前操作系統(tǒng)6系列的Yum源更新下載完畢!"

? ? ? ? exit

? ? fi

else

? ? echo "當前操作系統(tǒng)的版本目前不支持下載更新Yum源。"

fi

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容