码迷,mamicode.com
首页 > 系统相关 > 详细

shell脚本编程基础之case语句

时间:2019-12-08 11:02:13      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:防止   amp   语句   data-   else   The   提示   class   面向对象   

基础简介

脚本编程分为:

面向过程          选择结构:if语句,单分支、双分支、多分支;case语句
        控制结构:顺序结构(默认)   
                 循环结构:for、while、until
面向对象

case语句结构

case VAR_NAME in
var_value1)           #value被当做字符一个一个进行比较的;可以使用a-z,A-Z,0-9,[abc]
  statement1
  ...
  ;;
var_value2)
  statement2
  ...
  ;;
*)
  statement
  ...
  ;;
esac

case示例

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查看帮助

shell脚本编程基础之case语句

标签:防止   amp   语句   data-   else   The   提示   class   面向对象   

原文地址:https://www.cnblogs.com/dongzhanyi123/p/12004544.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!