今天给⼤家简单介绍⼀下结构条件语句的⽤法,实际上就是规范的多分⽀if语句,如下:case语法:
case \"字符串变量\" in 值1)指令1...;;
值2)指令2...;; ......
*)指令3...esac
--------------------------------------------------------------------------------------ok,我们可以换⼀种⽅式理解:中⽂编程语法:case \"找⼥朋友条件\" in 有房)嫁给你...;;
你爸是李刚) 嫁给你...;;
有上进⼼) 可以考虑先做朋友...;;
*)good bye bye! ...esac
---------------------------------------------------------------------下⾯我们拿根据菜单选项⼿机充值脚本⼀个例⼦来测试⼀下效果:
测试1:根据⽤户的输⼊值判断 是哪个数字,给出相对应的服务或提⽰信息
1 [root@bqh-117 scripts]# vim case1.sh 2 #!/bin/sh
3 #date:2019-04-20
4 #maill:1147076062@qq.com 5 #author:aゞ锦⾐卫
6 #script function:This is a order script.
7 #=============================================== 8 function menu() {
9 cat < 18 author:a?锦⾐卫19 date:2019-04-20 20 ===============================21 bqh22 } 23 menu24 25 function usage() { #定义usage函数⽤与交互式提⽰信息26 echo \"请输⼊充值类型{1|2|3|4|5}\" 27 }28 29 read -p \"客官,您想充值多少RMB:\" num #read⽅式获取值30 expr $num + 1 &>/dev/null #检测num参数是否为整数 31 if [ $? -ne 0 ];then #判断num参数是否为整数,如果不是给出提⽰并退出32 usage33 exit 034 fi35 36 if [ \"$num\" -eq 0 ];then #判断读取的参数是否等于0,若是则给出提⽰并退出37 usage38 exit 1 39 elif [ \"$num\" -gt 5 ];then #判断读取的参数是否⼤于5,若是则给出提⽰并退出40 usage41 exit 2 42 elif [ \"$num\" -eq 1 ];then 43 echo \"⽼板,充值10元RMB\"44 elif [ \"$num\" -eq 2 ];then 45 echo \"⽼板,充值30元RMB\"46 elif [ \"$num\" -eq 3 ];then 47 echo \"⽼板,充值50元RMB\"48 elif [ \"$num\" -eq 4 ];then 49 echo \"⽼板,充值100元RMB\"50 else 51 echo \"⽼板,我再考虑考虑...\" #若以上都不符合,则给出提⽰并退出52 exit 353 fi 执⾏脚本效果如下: 上⾯⽤if语句写的,感觉⽐较繁琐,代码量多,下⾯我们⽤case语句来实现以下: 1 [root@bqh-117 scripts]# vim case1.sh 2 #!/bin/sh 3 #date:2019-04-20 4 #maill:1147076062@qq.com 5 #author:aゞ锦⾐卫 6 #script function:This is a order script. 7 #=============================================== 8 function menu() { 9 cat < 18 author:aゞ锦⾐卫19 date:2019-04-20 20 ===============================21 bqh22 } 23 menu 24 #color 25 RED='\\E[1;31m' # 红26 GREEN='\\E[1;32m' # 绿27 YELOW='\\E[1;33m' # 黄28 BLUE='\\E[1;34m' # 蓝29 PINK='\\E[1;35m' # 粉红 30 SHAN='\\E[31;5m' # 闪烁提⽰31 RES='\\E[0m' # 清除颜⾊32 33 function usage() { #定义usage交互式函数⽤户提⽰34 echo -e \"${SHAN}请输⼊充值类型{1|2|3|4|5}$RES\"35 }36 37 read -p \"客官,您想充值多少RMB:\" num #以read⽅式获取⽤户输⼊值 38 expr $num + 1 &>/dev/null #检测⽤户输⼊值是否为整数,并将结果定向、空控设备39 if [ $? -ne 0 ];then #判断检测结果是否为0,若为0则给出交互式提⽰并退出40 usage41 exit 042 fi43 44 case $num in #判断num值符合菜单相对应的信息,并给出提⽰。45 1) 46 echo \"⽼板,充值10元RMB\"47 ;;48 2) 49 echo \"⽼板,充值30元RMB\"50 ;;51 3) 52 echo \"⽼板,充值50元RMB\"53 ;;54 4) 55 echo \"⽼板,充值100元RMB\"56 ;;57 5) 58 echo \"⽼板,我再考虑考虑...\"59 exit 160 ;; 61 *) #若以上都不符合,则给出交互式提⽰并退出。62 usage63 exit 264 ;;65 esac 执⾏脚本效果如下: case⼯作原理如上⾯脚本模式,取值后⾯必须为关键字 in,每⼀模式必须以右括号结束,取值可以为变量或常数,匹配发现取值符合某⼀模式后,其间所有命令开始执⾏直⾄“;;”,;; 与其他语⾔中的 break 类似,意思是跳到整个 case 语句的最后。取值将检测匹配的每⼀个模式。⼀旦模式匹配,则执⾏完匹配模式相应命令后不再继续其他模式。如果⽆⼀匹配模式,使⽤星号 * 捕获该值,再执⾏后⾯的命令。 因篇幅问题不能全部显示,请点此查看更多更全内容