練習:寫一個腳本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---