广告
返回顶部
首页 > 资讯 > 操作系统 >shell脚本语言之if条件判断语句实例详解
  • 261
分享到

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

shell if条件判断shell脚本else if判断shell的if判断 2022-06-05 00:06:42 261人浏览 泡泡鱼
摘要

目录1.单分支if条件语句1.1举例:判断目录是否存在,不存在则创建2.双分支if条件语句2.1举例:监听并自动重启apache服务脚本3.多分支if条件语句3.1举例:判断用户输入的是文件还是目录4.case条件语句4

目录
  • 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
    #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/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

    总结

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

    --结束END--

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

    本文链接: https://www.lsjlt.com/news/21634.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作