标签:选择结构 打印 shel start amp one 提示 line 分支
面向过程 选择结构:if语句,单分支、双分支、多分支;case语句 控制过程:顺序结构(默认) 循环结构 面向对象
case VAR_NAME in var_value1) #value被当做字符一个一个进行比较的;可以使用a-z,A-Z,0-9,[abc] statement1 ... ;; var_value2) statement2 ... ;; *) statement ... ;; esac
Example1: #!/bin/bash case $1 in ‘start‘) echo "start service...." ;; ‘stop‘) echo "stop service...." ;; ‘restart‘) echo "restart service....." ;; ‘status‘) echo "Running...." ;; *) echo "`basename $0` (start|stop|restart|status)" #`basename $0` 表示脚本本身名 ;; esac 当$1参数值为上面4个中的一个时,执行每个字符下的语句;如果上面哪个字符都不匹配,则执行 *) 下的语句 Example2: #!/bin/bash ADD=0 DEL=0 DEBUG=0 for i in `seq $#`;do case $1 in -v|--verbose) DEBUG=1 #输入指定字符,设置变量值,并且使用shift,把当前的$1踢掉,$2变为$1,$3变为$2;这样方便执行循环,这样case可以一直判断$1 shift ;; -h|--help) echo "Usage: `basename $0` -v|--verbose --add USER_LIST --del USER_LIST -h|--help" exit 7 ;; --add) ADD=1 ADDUSER=$2 shift ;; --del) DEL=1 DELUSER=$2 #此位置变量指定需要删除或者添加的用户名 shift ;; *) exit 8 #上面都不匹配,执行此条,防止一直循环判定不匹配的$1 ;; esac if [ $ADD -eq 1 ];then for USER in `echo "$ADDUSER"|sed -n ‘s/,/ /gp‘`;do #取出用户名作为循环的列表 if id $USER &>/dev/null;then [ $DEBUG -eq 1 ] && echo "$USER exists" #如果执行脚本时添加了-v,则用户存的话进行打印提示信息,不添加-v参数则不进行打印 else useradd $USER [ $DEBUG -eq 1 ] && echo "create $USER finished" #如果执行脚本时添加了-v参数,则创建完用户进行提示,不添加参数则不打印提示信息 fi done fi if [ $DEL -eq 1 ];then #如果执行脚本添加了--del参数,则上面的DEL变量值为1,值为1就进行下面的循环 for USER in `echo "$DELUSER"|sed -n ‘s/,/ /gp‘`;do #取出$2中的用户名 if id $USER &>/dev/null;then userdel -r $USER [ $DEBUG -eq 1 ] && echo "delete $USER finished" #执行脚本时添加了-v参数,则显示相关提示信息,反之则不显示 else [ $DEBUG -eq 1 ] && echo "$USER not exists" #执行脚本时添加-v参数,把DEBUG变量值变为1,则此条判断成立,执行后面的语句 fi done fi done 如果前面加上-v则显示添加过程,不添加-v就不显示,--add user1,xxxxx进行添加用户;--del user1,txwxx删除这些用户,-h查看帮助
标签:选择结构 打印 shel start amp one 提示 line 分支
原文地址:https://www.cnblogs.com/dongzhanyi123/p/12001819.html