流程控制语句:case

控制语句:用来实现对程序流程的选择、循环、转向和返回等进行控制。case是开关语句的一个组成部分;

它是根据变量的不同进行取值比较,然后针对不同的取值分别执行不同的命令操作适用于多分支,是一个多选择语句.

case  变量或表达式  in
      变量或表达式1)
                命令序列1
                ;;
      变量或表达式2)
                命令序列2
                ;;
      ……
                *)  
                默认命令序列
 esac

case语句执行流程控制:

1621163299999477.png

执行流程:

首先使用“变量或表达式”的值与值1进行比较,若取值相同则执行值1后的命令序列,直到遇见双分号“;; ”后跳转至esac,表示分支结束;

若与值1不相匹配,则继续与值2 进行比较,若取值相同则执行值2 后的命令序列,直到遇见双分号“;; ”后跳转至esac,表示结束分支。

依次类推,若找不到任何匹配的值,则执行默认模式“ *) ”后的命令序列,直到遇见esac后结束分支

注意事项:

       “变量或表达式”后面必须为单词in,每一个“变量或表达式”的值必须以右括号结束。取值可以为变量或常数。匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;; 

        匹配中的值可以是多个值,通过“|”来分隔

例1:编写一个操作文件的脚本

[root@xuegod63 ~]# cat case-1.sh

#########################################################################
# File Name: case-1.sh
# Author: xuegod
#########################################################################
#!/bin/bash
cat <<eof
*****************
** 1. backup  **
** 2. copy   **
** 3. quit   **
*****************
eof
read -p "Input a choose: " OP
case $OP in
1|backup)
        echo "BACKUP......"
        ;;
2|copy)
        echo "COPY....."
        ;;
3|quit)
        exit
        ;;
*)
        echo error
esac

例2:编写一个启动apache服务脚本

# yum install httpd -y

# vim  case-2.sh

#!/bin/bash
case $1 in
start)
        systemctl $1 httpd
        ps aux|grep httpd
        echo "httpd start"
        ;;
stop)
        systemctl $1 httpd
        ps aux|grep httpd
        echo "httpd stop"
        ;;
status)
        systemctl $1 httpd
        ;;
restart)
        systemctl $1 httpd
        echo "httpd restart"
        ;;
*)
        echo "USAGE: $0  start|stop|restart"
esac

版权声明:
作者:WaterBear
链接:https://l-t.top/1614.html
来源:雷霆运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>