博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sh4.case语句
阅读量:5024 次
发布时间:2019-06-12

本文共 4038 字,大约阅读时间需要 13 分钟。

case ... esac 与其他语言中的 switch ... case 语句类似,是一种多分枝选择结构。

case 语句匹配一个值或一个模式,如果匹配成功,执行相匹配的命令。case语句格式如下:

1 case 值 in 2 模式1) 3     command1 4     command2 5     command3 6     ;; 7 模式2) 8     command1 9     command210     command311     ;;12 *)13     command114     command215     command316     ;;17 esac

case工作方式如上所示。取值后面必须为关键字 in,每一模式必须以右括号结束。取值可以为变量或常数。匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;。;; 与其他语言中的 break 类似,意思是跳到整个 case 语句的最后。

取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。如果无一匹配模式,使用星号 * 捕获该值,再执行后面的命令。

例1,

1 echo 'Input a number between 1 to 4' 2 echo 'Your number is:\c' 3 read aNum 4 case $aNum in 5     1)  echo 'You select 1' 6     ;; 7     2)  echo 'You select 2' 8     ;; 9     3)  echo 'You select 3'10     ;;11     4)  echo 'You select 4'12     ;;13     *)  echo 'You do not select a number between 1 to 4'14     ;;15 esac16 17 18 # read  输入语句 类似 input 19 输入不同的内容,会有不同的结果,例如:20 Input a number between 1 to 421 Your number is:322 You select 3

 

例2:

1 #!/bin/bash 2 option="${1}" 3 case ${option} in 4    -f) FILE="${2}" 5       echo "File name is $FILE" 6       ;; 7    -d) DIR="${2}" 8       echo "Dir name is $DIR" 9       ;;10    *) 11       echo "`basename ${0}`:usage: [-f file] | [-d directory]"12       exit 1 # Command to come out of the program with status 113       ;;14 esac15 16 17 [root@localhost test]# ./case2.sh -d ddsss18 Dir name is ddsss19 [root@localhost test]# ./case2.sh -f ddsss20 File name is ddsss

 

练习:写一个脚本 showlogged.sh, 其用法格式为:

showlogged.sh -v -c -h|--help

其中,-h选项只能单独使用,用于显示帮助信息;-c选项时,显示当前系统上登录的所有用户,如果同时使用了-v选项,则既显示同时登录的用户数,又显示登录的用户的相关信息:

1 #/bin/bash 2 # 3 declare -i SHOWNUM=0 4 declare -i SHOWUSERS=0 5  6 for I in `seq 1 $#`;do 7     if [ $# -gt 0 ];then 8         case $1 in 9         -h|--help)10             echo "Usage:`basename $0` -h|--help -c|count -v|--verbose"11             exit 0 ;;12         -v|--verbose)13             let SHOWUSERS=114             shift ;;15         -c|--count)16             let SHOWNUM=117             shift ;;18         *)19             echo "Usage:`basename $0` -h|--help -c|count -v|--verbose"20             exit 8 ;;21         esac22     fi23 done24 if [ $SHOWNUM -eq 1 ];then25     echo "Logged users:`who | wc -l`."26     if [ $SHOWUSERS -eq 1 ];then27         echo "They are:"28         who29     fi30 fi31 32 33 34 [root@beary test]# ./case4.sh -c35 Logged users:2.36 [root@beary test]# ./case4.sh -c -v37 Logged users:2.38 They are:39 root     tty1         2016-10-25 15:2240 root     pts/0        2016-11-14 15:20

 

 

 

添加,删除用户脚本:

case 优化版

-v 显示执行过程,-add ,-del 可同时使用

1 [root@beary test]# cat case3.sh  2 #/bin/bash 3 # 4 DEBUG=0 5 ADD=0 6 DEL=0 7  8 for I in `seq 0 $#`;do 9 if [ $# -gt 0 ];then10 case $1 in11 -v|--verbose)12     DEBUG=113     shift14     ;;15 -h|--help)16     echo "Usage:`basename $0` -add USER_LIST -del USER_LIST -v|--verbose -h|--help"17     exit 018     ;;19 -add)20     ADD=121     ADDUSERS=$222     shift 223     ;;24 -del)25     DEL=126     DELUSERS=$227     shift 228     ;;29 *)30     echo "Usage:`basename $0` -add USER_LIST -del USER_LIST -v|--verbose -h|--help"31     exit 732     ;;33 esac34 fi35 done36 37 if [ $ADD -eq 1 ];then38     for USER in `echo $ADDUSERS | sed 's#,# #g'`;do39         if id $USER &> /dev/null;then40             [ $DEBUG -eq 1 ] && echo "$USER exists."41         else42             useradd $USER43             [ $DEBUG -eq 1 ] && echo "Add user $USER finished."44         fi45     done46 fi47 48 if [ $DEL -eq 1 ];then49     for USER in `echo $DELUSERS | sed 's#,# #g'`;do50         if id $USER &> /dev/null;then51             userdel -r $USER52             [ $DEBUG -eq 1 ] && echo "Del user $USER finished."53         else54             [ $DEBUG -eq 1 ] && echo "$USER no such!!"55         fi56     done57 fi58 59 60 [root@beary test]# ./case3.sh -v -add xin,fd,dd,dfdkl -del xin,fd,dd61 Add user xin finished.62 Add user fd finished.63 Add user dd finished.64 Add user dfdkl finished.65 Del user xin finished.66 Del user fd finished.67 Del user dd finished.

 

转载于:https://www.cnblogs.com/beary/p/6061761.html

你可能感兴趣的文章
玩转storm
查看>>
浅谈 @RequestParam 和@PathVariable
查看>>
ASP.NET MVC 3–Global Action Filters
查看>>
图像切割之(一)概述
查看>>
JAVA修饰符类型(public,protected,private,friendly)
查看>>
flex利用webservice上传照片
查看>>
IOS开发之Bug--使用KVC的易错情况
查看>>
python list和tuple
查看>>
基础薄弱的反思
查看>>
代码说明call和apply方法的区别 (咱们这方面讲解的少,这样的题有变式,需要举例讲解一下)...
查看>>
T-SQL 类型转换
查看>>
在eclipse中设计BPMN 2.0工作流定义的根本步骤
查看>>
Json对象与Json字符串互转(4种转换方式)
查看>>
PAT甲级1002 链表实现方法
查看>>
查看Linux信息
查看>>
Python中sys模块sys.argv取值并判断
查看>>
【详记MySql问题大全集】四、设置MySql大小写敏感(踩坑血泪史)
查看>>
并查集
查看>>
ubuntu 11.04下android开发环境的搭建!
查看>>
Bzoj 3343: 教主的魔法
查看>>