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

adminuser33.sh --add -del -h|--help -v|--verbose

其中,-h选项只能单独使用,用于显示帮助信息;--add选项时,新增用户;如果同时使用了-v选项,则新增用户后显示新增用户--del选项时,删除用户。


#!/bin/bash
#
DEBUG=0
ADD=0
DEL=0

for I in `seq 1 $#` ; do

  if [ $# -gt 0 ]; then

    case $1 in                   有一个匹配就结束整个CASE
    -v|--verbose)
      DEBUG=1
      shift    ;;
    -h|--help)
      echo "Usage: `basename $0` --add USER_LIST --del USER_LIST -v|--verbose -h|--help"
      exit 0
      ;;
    --add)
      ADD=1
      ADDUSERS=$2
      shift 2
      ;;
    --del)
      DEL=1
      DELUSERS=$2
      shift 2
      ;;

    *)
      echo "Usage: `basename $0` --add USER_LIST --del USER_LIST -v|--verbose -h|--help"
      exit 7
    esac

  fi

done

if [ $ADD -eq 1 ] ; then
  for AUSER in `echo $ADDUSERS | sed 's@,@ @g' ` ; do
     if id $AUSER &> /dev/null ; then
        [ $DEBUG -eq 1 ] && echo "$AUSER exists."
     else
        useradd $AUSER
        [ $DEBUG -eq 1 ] && echo "Add user $AUSER finished."
     fi
  done
fi

if [ $DEL -eq 1 ] ; then
  for DUSER in `echo $DELUSERS | sed 's@,@ @g' ` ; do
     if id $DUSER &> /dev/null ; then
       userdel -r $DUSER
       [ $DEBUG -eq 1 ] && echo "delete $DUSER finished."
     else
       [ $DEBUG -eq 1 ] && echo "$DUSER not exists."
     fi
  done
fi
echo " $DEBUG  add:$ADD  del:$DEL"



[root@localhost ~]# ./adminuser33.sh -v --add tom2,tom3 --del tom2
Add user tom2 finished.
Add user tom3 finished.
delete tom2 finished.
 1  add:1  del:1



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

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

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


  1 #!/bin/bash
  2 #
  3
  4
  5 declare SHOWNUM=0
  6 declare SHOWUSERS=0
  7 for I in `seq 1 $#` ; do
  8   if [ $# -gt 0 ]; then
  9     case $1 in
 10      -c)
 11          SHOWNUM=1
 12          shift
 13          ;;
 14      -v|--verbose)
 15          let SHOWUSERS=1
 16          SHOWNUM=1
 17          shift
 18          ;;
 19      -h|--help)
 20          echo "showlogged.sh -v -c -h|--help."
 21          exit 0
 22          ;;
 23      *)
 24          echo "showlogged.sh -v -c -h|--help."
 25          exit 7
 26          ;;
 27      esac
 28   fi
 29 done
 30 if [ $SHOWNUM -eq 1 ]; then
 31   echo "Logged usrs: `who | wc -l`"
 32   who
 33   if [ $SHOWUSERS -eq 1 ] ; then
 34      echo "All users: `cat /etc/passwd | cut -d: -f1 |wc -l`"
 35   fi
 36 fi


[root@localhost ~]# ./showloged.sh -v
Logged usrs: 3
root     pts/0        2016-10-24 07:55 (*.*.135.13)
root     pts/1        2016-10-24 13:34 (*.*.135.13)
root     pts/2        2016-10-24 15:30 (*.*.135.13)
All users: 62
[root@localhost ~]# ./showloged.sh -c
Logged usrs: 3
root     pts/0        2016-10-24 07:55 (*.*.135.13)
root     pts/1        2016-10-24 13:34 (*.*.135.13)
root     pts/2        2016-10-24 15:30 (*.*.135.13)


---end---