shell脚本语言之if条件判断语句实例详解

2022-09-03 17:25:53 60 0
魁首哥

目录

  • 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后面跟符合条件之后执行的程序,可以放在[]之后,用;分隔。也可以换行写入,

    shell脚本语言之if条件判断语句实例详解

    就不需要“;”了。

    比如:

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

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

    #!/bin/bash
    #date:2022-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
    #Author:liu
    #chkconfig: 2345 99 33
    #description: nginx server control tools
     
    ngxc="/usr/lochttp://www.cppcns.comal/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 st恰卡编程网op|start|restart|reload."
            exit 1
    esac

    总结

    到此这篇关于shell脚本语言之if条件判断语句的文章就介绍到这了,更多相关shell脚本if条件判断语句内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

    收藏
    分享
    海报
    0 条评论
    60
    上一篇:服务器端如何开启GZIP压缩功能(Apache、IIS、Nginx) 下一篇:Vmware Station安装Arch Linux的详细流程

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码