21.shell语言之if条件判断语句

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

📋 个人简介

  • 💖 作者简介大家好我是小鹏linux运维领域新星创作者。😜
  • 📝 个人主页小鹏linux🔥
  • 🎉 支持我点赞👍+收藏⭐️+留言📝
  • 💬格言你未必出类拔萃但一定与众不同🔥

📕 系列专栏
               🍎 阶段一windows基础                        原创16篇
               🍎 阶段二Linux基础知识                      原创38篇
               🍎 阶段三shell基础+shell高级              原创21篇
               🍎 阶段四python基础及自动化应用      原创未开始
               🍎 阶段五Linux网络服务                       原创未开始
               🍎 阶段六集群原理及架构                     原创未开始
               🍎 阶段七云计算虚拟化技术
                 原创未开始

目录

1.单分支if条件语句

1.1举例判断目录是否存在不存在则创建

2.双分支if条件语句

2.1举例监听并自动重启apache服务脚本

3.多分支if条件语句

3.1举例判断用户输入的是文件还是目录

4.case条件语句

4.1举例创建启动脚本让service命令管理apache

4.2举例创建启动脚本让service命令管理nginx


1.单分支if条件语句

then后面跟符合条件之后执行的程序可以放在[]之后用;分隔。也可以换行写入

就不需要“;”了。

比如

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

1.1举例判断目录是否存在不存在则创建

#!/bin/bash
#date2022-4-13
#描述if单分支语句示例判断目录是否存在
read -p "请输入需要判断的目录" name
if [ ! -d $name ]
    then
	    echo "$name目录不存在正在创建..."
	    mkdir -p $name
	    echo "$name目录创建完成."
fi
	    echo "$name目录已存在正在退出..."

2.双分支if条件语句

if   [  条件判断式  ] 
    then
        条件成立时执行的程序。 
    else
        条件不成立时执行的另一个程序。 
fi

2.1举例监听并自动重启apache服务脚本

在日常工作中服务器上的服务经常会宕机。如果我们对服务器监控不好就会造成服务器中服务宕机了而管理员却不 知道的情况。这是我们可以写一个脚本来监听本机的服务。如果服务停止或宕机了可以自动重启这些服务。用apache举例

首先介绍端口扫描命令

nmap端口扫描命令

格式nmap -sT 域名或IP

子选项

        -s         扫描

        -T        扫描所有开启的TCP端口 

nmap扫描后显示的端口一定是存活的。

脚本要使用nmap命令首先用yum -y install nmap安装。

apache服务也是yum安装。

[root@xiaopeng ~]# cat autostart.sh 
#!/bin/bash 
port=$(nmap -sT 192.168.22.222 | 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 start &> /dev/nullecho "$(date) restart httpd!!" >> /tmp/autostart-err.log 
fi

(首先用nmap命令查看是否开启apache并赋值给port。

然后进行条件判断。如果服务开启输出当前时间+httpd is ok 到/tmp/autostart-

acc.log。

如果变量port的值不是open那么执行else下操作。首先启动apache服务将启动后 信息输出至位桶然后在/tmp/autostart-err.log中记录。在本次脚本中nmap命令使用的是

IP查找端口但并未指DNS所以会报DNS不存在的错但不影响结果。

3.多分支if条件语句

if   [  条件判断式1  ] 
    then
        当条件判断式1成立时执行程序1。 
elif  [  条件判断式2  ] 
    then
        当条件判断式2成立时执行程序2。 
        ......可加入更多条件 
    else
        当所有条件不成立时最后执行此程序。 
fi

3.1举例判断用户输入的是文件还是目录

#!/bin/bash
#date:2022-4-13
#描述:判断文件类型
read -p "请输入一个文件:" file
if [ -z $file ]
    then
	    echo	"错误输入的文件为空."
elif [ ! -e $file ]
    then
	    echo	"错误输入的文件不存在."
elif [ -f $file ]
    then
	    echo	"$file是一个普通文件"
elif [ -d $file ]
    then
	    echo	"$file是一个目录"
else
	    echo	"$file是其他类型文件"
fi

4.case条件语句

多分支case条件语句

case  $变量名  in 
    “值1” 
        如果$变量等于值1则执行程序1 
     
    “值2” 
        如果$变量等于值2则执行程序2 
     
        ....省略... 
    * 
        如果$变量的值不是以上值则执行此程序 
     
esac 

4.1举例创建启动脚本让service命令管理apache

[root@xiaopeng htdocs]# vim /etc/init.d/apached
#/bin/bash
# chkconfig: 2345 64 36         
# description: A very fast and reliable SQL database engine
httpd=/usr/local/apache2/bin/apachectl
case $1 in
start)
        $httpd start
        ;;
stop)
        $httpd stop
        ;;
restart)
        $0 stop                 
        sleep 0.05              
        $0 start
        ;;
configtest)                     
$httpd  -t
;;
*)
        echo "usage:$0 start|stop|restart|configtest."
        ;;
esac

4.2举例创建启动脚本让service命令管理nginx

[root@xiaopeng conf]# vim  /etc/init.d/nginx
#!/bin/bash
#Authorliu
#chkconfig: 2345 99 33
#description: nginx server control tools

ngxc="/usr/local/nginx/sbin/nginx"
ngxc_fpm="/usr/local/php/sbin/php-fpm"
case "$1" in
    start)
        $ngxc -t &> /dev/null
        if [ $? -eq 0 ];then
                $ngxc
                $ngxc_fpm
                echo "nginx service start success!"
        else
                $ngxc -t
        fi
        ;;
    stop)
        $ngxc  -s  stop
        killall  php-fpm
        echo "nginx service stop success!"
        ;;
    restart)
        $0 stop
        $0 start
        ;;
    reload)
        $ngxc -t &> /dev/null
        if [ $? -eq 0 ];then
               $ngxc  -s  reload
                pkill  -HUP  php-fpm
                echo "reload nginx config success!"
        else
                $ngxc -t
        fi
        ;;
    *)
        echo "please input stop|start|restart|reload."
        exit 1
esac

喜欢的请来个三连支持一下吧谢谢谢谢

您的支持是我最大的动力

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: shell