你愿意做我女朋友吗表白网站/中国国家培训网官网查询
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 执行脚本显示结果状态信息
转载于:https://blog.51cto.com/willow/1764856