您好,欢迎来到筏尚旅游网。
搜索
您的当前位置:首页shell的case用法

shell的case用法

来源:筏尚旅游网
shell的case⽤法

今天给⼤家简单介绍⼀下结构条件语句的⽤法,实际上就是规范的多分⽀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 <11 ===============================12 1.10元RMB13 2.30元RMB14 3.50元RMB15 4.100元RMB16 5.我再考虑考虑...17

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 <11 ===============================12 1.10元RMB13 2.30元RMB14 3.50元RMB15 4.100元RMB16 5.我再考虑考虑...17

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 语句的最后。取值将检测匹配的每⼀个模式。⼀旦模式匹配,则执⾏完匹配模式相应命令后不再继续其他模式。如果⽆⼀匹配模式,使⽤星号 * 捕获该值,再执⾏后⾯的命令。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- efsc.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务