linux下Bash编程case语句及编写脚本(八)

1.case语句,格式如下:

case 变量 in 

值1)

  语句1

  ...

  ;;  每分支语句以分号结束

值2)

  语句2

  ...

  ;;

*)    其他,相当于if语句else

  语句3

  ...

  ;;

esac   整条case语句结束

2.编写一个任意添加与删除用户的脚本,要求如下:

     2.1:如果脚本选项是-a或--add:,将添加用户; 如果选项是-d或--del,将删除用户,

            如果是-h或--help显示帮助信息,如果是-v或--verbose显示执行过程,否则不显示执行过程

     2.2:脚本选项后面的参数可任意指定多个用户并且用逗号隔开密码同用户名;

     2.3:用户存在就提示不能添加,用户不存在就不能删除用户;尽可能有相关提示信息

  vim admuser.sh  创建一个脚本文件:

#!/bin/bash

ADD=0 增加用户变量开关

DEL=0 删除用户变量开关

DEBUG=0 作为显示执行过程变量开关

#以下判断脚本后面的参数是否正确

for I in `seq 1 $#`; do

  if [ $# -gt 0 ];then

    case $1 in

    -v|--verbose)

        DEBUG=1

        shift

        ;;

    -h|--help)

        echo "Usage:`basename $0` -v|--verbose | -h|--help | -a|--add user1,user2... -d|--del user1,user2..."

        exit 0

        ;;

    -a|--add)

        ADD=1

        ADDUSERS=$2

        shift 2

                     ;;

    -d|--del)

        DEL=1

        DELUSERS=$2

        shift 2

         ;;

     *)

        echo "Usage:`basename $0` -v|--verbose | -h|--help | -a|--add user1,user2... -d|--del user1,user2..."

        exit 8

         ;;

     esac

  fi

done


#以下判断增加用户

if [ $ADD -eq 1 ]; then

   for USER in `echo "$ADDUSERS" | sed 's#,# #g'`; do  取出要添加用户列表

       if ! id $USER &> /dev/null; then          判断用户是否存在,不存在则添加

          useradd $USER

          echo $USER | passwd --stdin $USER &> /dev/null

#以下两条命令意思是:如果选项没有-v或--verbose,不显示执行过程与结果

          [ $DEBUG -eq 1 ] && echo "$USER add successfully" 

       else

          [ $DEBUG -eq 1 ] && echo "$USER exist" 

        fi

   done

fi



#以下判断删除用户

if [ $DEL -eq 1 ]; then

   for USER in `echo "$DELUSERS" | sed 's/,/ /g'`; do  取出要删除用户列表

       if id $USER &> /dev/null; then           判断用户是否存在,存在则删除

          userdel -r $USER

#以下两条命令意思是:如果选项没有-v或--verbose,不显示执行过程与结果

          [ $DEBUG -eq 1 ] && echo "$USER del finished"

       else

          [ $DEBUG -eq 1 ] && echo "$USER no exist"


        fi

    done

fi

3.写一个脚本userlogin.sh,其用法格式为:

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

 3.1.-c或--count选项统计多少用户登入当前系统

 3.2.如果-c或--count选项与-v或--verbose选项同时使用,则显示用户登入信息和用户总数

 3.3.-h或--help选项显示帮助信息;

 3.4.可以使用w或who命令

 vim userlogin.sh  创建一个脚本文件:

#!/bin/bash

declare -i USERNUM=0 声明变量为整型

declare -i DISPLAY=0

for I in `seq 1 $#`; do

  if [ $# -gt 0 ]; then

    case $1 in

    -h|--help)

      echo "Usage: `basename $0` -h|--help -v|--verbose -c|--count "

      exit 0 

      ;;

    -v|--verbose)

     DISPLAY=1   

      shift ;;

    -c|--count)

       USERNUM=1

      shift 

      ;;

    *)

      echo "Usage: `basename $0` -h|--help  -v|--verbose -c|--count"

      exit 6 ;;

    esac

  fi

done



if [ $USERNUM -eq 1 ]; then 判断参数是否有-c或--count

  echo "Loginusers have `who | wc -l`."

  [ $DISPLAY -eq 1 ] && echo -e "They are :\n`w`" 判断参数是否有-v或--verbose

fi


./userlogin.sh -v -c 执行脚本显示结果状态信息

wKioL1cTsJix0Bl1AAGnq44IiuE877.jpg