zoukankan      html  css  js  c++  java
  • 第五章 流程控制之case语句

    第五天:流程控制之case语句

    一、语法

    case 变·量 in
    模式一)
    	命令序列1
    	;;
    模式二)
    	命令序列2
    	;;
    ...
    *)
    	无匹配后命令序列
    esac
    

    二、案例

    1)案例一

    #判断用户的类型
    
    [root@db04 /scripts/day05]# vim user.sh 
    #!/bin/bash
    # Author:jh
    # Time:2020-11-20  10:39:42
    # Name:user.sh
    # Version: 1.0
    # Discription: To  
    
    read -p "please input user name:" name
    [ -z "$name" ] && echo "The user name must exist" && exit
    
    case $name in
    "root")
        echo "admin"
        ;;
    "jh")
        echo "com user"
        ;;
    *)
        echo "other user"
    esac
    
    [root@db04 /scripts/day05]#  chmod +x user.sh
    

    2)案例二

    #编写nginx启动脚本
    
    [root@db04 /scripts/day05]# vim nginx.sh 
    #!/bin/bash
    # Author:jh
    # Time:2020-11-20  11:02:54
    # Name:nginx.sh
    # Version: 1.0
    # Discription: To  
    
    [ $# -ne 1 ] && echo "Usage: $0 {start|stop|restart|reload|status}" && exit
    
    function start() {
        ps aux |grep [n]ginx |grep -q master
        if [ $? -eq 0 ];then
            echo "nignx is started"
        else
            /usr/local/nginx/sbin/nginx &>/dev/null
            if [ $? -eq 0 ];then
                echo "nginx start success..."
            else
                echo "nginx start failed"
            fi
        fi
    }
    
    function stop(){
       ps aux |grep [n]ginx |grep -q master
        if [ $? -eq 0];then
           /usr/local/nginx/sbin/nginx -s stop
           sleep 3
           ps aux |grep [n]ginx |grep -q  master      
           if [ $? -ne 0 ];then
               echo "nginx stop success..."
               sleep 3
           else
               echo "nginx stop failed"
           fi
        else
            echo "nginx is stopped"
        fi
    }
    
    case $1 in
    "start")
        start
        ;;
    "stop")
        stop
        ;;
    
    "restart")
        stop
        start
        ;;
    
    "reload")
        stop
        start
        ;;
    
    "status")
        ps aux |grep [n]ginx |grep -q  master
        if [ $? -eq 0 ];then
            echo "nginx is up"
        else
            echo "ngins is down"
        fi
        ;;
    *)
        echo "Usage: $0 {start|stop|restart|reload|status}"
    esac
    
    [root@db04 /scripts/day05]#  chmod +x nginx.sh
    

    3)案列三

    [root@jh shell]# vim nginx_stat.sh
    #!/bin/bash
    . /etc/init.d/functions
    if [ $# -ne 1 ]
    then
    echo "USAGE $0 {start|stop|restart}"
    exit 1
    fi
    if [ "$1" == "start" ]
    then
    action "start nginx" /bin/true
    elif [ "$1" == "stop" ]
    then
    action "stop nginx" /bin/true
    elif [ "$1" == "restart" ]
    then
    action "restart nginx" /bin/true
    else
    echo "USAGE $0 {start|stop|restart}"
    exit 1
    fi
    [root@jh shell]# chmod +x nginx_stat.sh
    [root@jh shell]# ./nginx_stat.sh start
    start nginx 						[ 确定 ]
    [root@jh shell]# ./nginx_stat.sh restart
    restart nginx 						[ 确定 ]
    [root@jh shell]# ./nginx_stat.sh
    USAGE ./nginx_stat.sh {start|stop|restart}
    

    4)案列四

    # 储备知识1
    netstat -lntup|grep  ":80"  # 锚定单词的结尾
    # 储备知识2
    action:打印一段信息并执行给定的命令,然后根据给定命令的执行的结果来调用 success,failure方
    法,确定最终显示的内容
    [root@jh shell]# action "nginx start is" :
    nginx start is                       [  确定 ]
    [root@jh shell]# action "nginx start is" /bin/true
    nginx start is                       [  确定 ]
    [root@jh shell]# action "nginx start is" /bin/false
    nginx start is                       [失败]
    
    
    # 代码
    [root@jh shell]# vim nginx_stat.sh
    #!/bin/bash
    . /etc/init.d/functions
    args=$1
    fun(){
    [ $? -eq 0 ] && action "Nginx $args is " /bin/true  || echo "Nginx $args is
    " /bin/false
    }
    case $1 in
     start)
       netstat -lntup|grep  ":80" &>/dev/null
       if [ $? -eq 0 ]
       then
         echo "Nginx is runing..."
       else
         /usr/sbin/nginx
         fun
       fi
       ;;
     stop)
       /usr/sbin/nginx -s stop
       fun
       ;;
     reload)
       /usr/sbin/nginx -s reload
       fun
       ;;
     restart)
       netstat -lntup|grep  ":80" &>/dev/null
       if [ $? -ne 0 ]
       then
         /usr/sbin/nginx
        [ $? -eq 0 ] && echo "Nginx start is ok" || echo "Nginx start is
    failed"
       else
         /usr/sbin/nginx -s stop              
        [ $? -eq 0 ] && echo "Nginx stop is ok" || echo "Nginx stop is failed"
         sleep 2
         /usr/sbin/nginx
         fun
       fi
       ;;
     status)
       netstat -lntup|grep  ":80" &>/dev/null
       if [ $? -eq 0 ]
       then
         echo "Nginx is runing ..."
       else
         echo "Nginx is not runing ..."
       fi
       ;;
      *)
        echo "Usage: $0 {start|stop|status|restart|reload}"
        exit 2
    esac
    

    5)案例五

    #编写一个简易跳板机脚本
    
    # 储备知识
    Linux中断信号区别为:键入不同、对应操作不同、启用不同。
    1、HUP中断信号:HUP中断信号的对应操作为让进程挂起,睡眠。同<Ctrl+X>
    2、INT中断信号:INT中断信号的对应操作为正常关闭所有进程。同<Ctrl+C>
    3、TERM中断信号 15:TERM中断信号的对应操作为正常的退出进程。
    4、KILL中断信号 9:KILL中断信号的对应操作为强制关闭进程。
    5、STOP 19暂停(同 Ctrl + Z)
    6、CONT 18继续(与STOP相反, fg/bg命令)
    7、TSTP中断信号:TSTP中断信号的对应操作为暂时停用进程。
    
    # 代码
    [root@jh shell]# cat jumpserver.sh
    #!/bin/bash
     
    cat<<EOF
    1. BACKUP 10.0.0.41
    2. WEB02  192.168.12.21
    3. WEB03  10.0.0.9
    EOF
    trap "echo 不要乱按键盘,否则服务器将会爆炸" HUP INT TSTP
    while true
    do
      read -p "请输入连接主机编号信息: " num
      read -p "请输入账号: " user
      case $num in
       1)
         ssh $user@10.0.0.41
         [ $? -ne 0 ] && echo "connect faild"
         ;;
       2)
         ssh $user@192.168.12.21
         [ $? -ne 0 ] && echo "connect faild"
         ;;
       *)
         echo "请输入连接主机信息"
      esac
    done
    
  • 相关阅读:
    模拟赛20181101 雅礼 Wearry 施工 蔬菜 联盟
    模拟赛20181031 雅礼 Wearry 养花 折射 画作
    set/priority_queue的运算符重载
    set的完整用法
    最长公共上升子序列 O(n^2)
    无向图边双联通分量 tarjan 模板
    ID 迭代加深搜索 模板 埃及分数
    树上背包DP Luogu P2014 选课
    A* 第k短路
    [POJ3468]关于整数的简单题 (你想要的)树状数组区间修改区间查询
  • 原文地址:https://www.cnblogs.com/jhno1/p/14095673.html
Copyright © 2011-2022 走看看