网站建设与管理就业/网站快速优化排名推荐
case
执行流程:
首先使用变量值与数值1进行比较,若取值相同则执行数值1后的命令序列,直到遇见双分号;; 后跳转至esac,表示分支结束;若与数值1不相匹配,则继续与数值2 进行比较,若取值相同则执行数值2 后的命令序列,直到遇见双分号;; 后跳转至esac,表示结束分支,……依次类推,若找不到任何匹配的值,则执行默认模式*) 后的命令序列,直到遇见esac后结束分支。
格式:
case 变量值 in
数值1)
命令序列
;;
数值2)
命令序列
;;
…
*)
默认命令序列
esac
案例
例1:用户输入0-9任意一个数字,通过case来判断用户输入的是哪一个数字
#!/bin/bash
#date:2020-2-28
#描述:判断用户输入数字
read -p "请输入一个数(0-9) ==> " NUM
case $NUM in1)echo "输入的数是 1 ";;2)echo "输入的数是 2 ";;[3-8])echo "输入的数是 $NUM";;9|0)echo "输入的数是 $NUM";;*)echo "请输入数字 [0-9]"
esac
其中的[],表示匹配[]中的任意一个数。
执行效果:
[root@linus ~]# sh test.sum.sh
请输入一个数(0-9) ==> 1
输入的数是 1
[root@linus ~]# sh test.sum.sh
请输入一个数(0-9) ==> 5
输入的数是 5
[root@linus ~]# sh test.sum.sh
请输入一个数(0-9) ==> k
请输入数字 [0-9]
例2:使用case做一个小剧场
脚本内容:
#!/bin/bash
#date:2020-2-28
#描述:使用case做一个小剧场
echo "饭店菜单:"
echo "1.炒面"
echo "2.馄饨"
echo "3.饺子"
read -p "服务员(女):请问先生,您想吃点什么?" sumcase $sum in
1|炒面)echo -e "\033[36m我:那我就要炒面吧-----\033[0m"echo -e "\033[36m服务员:好的先生-----\033[0m";;
2|馄饨)echo -e "\033[36m我:我要个馄饨-----\033[0m"echo -e "\033[36m服务员:好的先生-----\033[0m";;
3|饺子)echo -e "\033[36m我:给我来一个饺子-----\033[0m"echo -e "\033[36m服务员:好的先生-----\033[0m";;
*)echo -e "\033[31m我:那我来一个$sum-----\033[0m"echo -e "\033[31m服务员:很抱歉,先生,我们没有$sum-----\033[0m"
esac
在1数值中的1 | 炒面,| 是逻辑或,代表着1或者炒面,标准格式为"1|炒面",通常情况下,不加也不会影响结果,但对于有空格的字符串,需要加上双引号,将其看做一个整体。
执行效果:
了解文字色彩设置请转到==>https://blog.csdn.net/qq_42534026/article/details/104554590
例3:使用case制作一个mysqld的控制脚本
脚本内容:
#!/bin/bash
#date:2020-2-28
#描述:mysqld控制脚本
case $1 in
start)service mysqld $1 &>/dev/nullps -ef | grep mysqld &>/dev/nullif [ $? -eq 0 ]thenecho -e "\033[34m mysqld启动成功-------\033[0m"elseecho -e "\033[34m mysqld启动失败-------\033[0m"fi;;
stop)service mysqld $1 &>/dev/nullecho -e "\033[34m mysqld服务关闭---------------\033[0m";;
status)echo -e "\033[34m mysqld服务状态-----------\033[0m"service mysqld $1;;
restart)service mysqld $1 &>/dev/nullecho -e "\033[34m mysqld服务重启成功-----------\033[0m";;
*)echo "输入错误,格式为$0 start|stop|status|restart"
esac
执行效果: