case语句
——选择结构
用法
case SWITCH(引用变量) in
value1)
statement
...
;;
value2)
statement
...
;;
*)
statement
...
;;
esac
例子
- 只接受start,stop,restart,status其中之一,如果不是则给予提示
#!/bin/bash
case $1 in
'start')
echo "start server ..."
;;
'restart')
echo "restart server ..."
;;
'stop')
echo "stop server ..."
;;
'status')
echo "status server"
;;
*)
echo "please input start/restart/stop/status"
;;
esac
- 写一个脚本,当用户输入-v或--version时输出执行结果提示,当输入--add user1,user2时,依次创建用户,当输入--del user1,user2时依次删除用户,--help,显示帮助信息
#!/bin/bash
#设置默认值
v=0
ADD=0
DEL=0
#判定用户输入了什么命令
for I in `seq 1 $#`; do
if [ $# -gt 0 ]; then
case $1 in
-v|--verbose)
v=1
shift 1#踢除第一个参数
;;
-h|--help)
echo "Usage: `basename $0` --
add USER_LIST --del
USER_LIST -v|--verbose -h|--help"
;;
--add)
ADD=1
ADDUSERS=$2
shift 2#踢除前两个参数
;;
--del)
DEL=1
DELUSERS=$2
shift 2
;;
esac
fi
done
#按用户的命令进行操作
if [ $ADD -eq 1 ]; then
for USER in `echo $ADDUSERS | sed 's@,@ @g'`; do#处理并遍历输入的用户
if id $USER &> /dev/null; then
[ $v -eq 1 ] && echo "$USER exists"
else
useradd $USER
[ $v -eq 1 ] && echo "Add user $USER finished"
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 -eq 1 ] && echo "Delete $USER finished"
else
[ $v -eq 1 ] && echo "$USER not exists"
fi
done
fi
- 写一个脚本show logged.sh,其用法格式为:showlogged.sh -v -c -h|--help,其中,-h选项只能单独使用,用于显示帮助信息;-c选项时,显示当前系统上登录的所有用户数;如果同时使用了-v选项,则既显示同时登入的用户数,又显示登入用户的相关信息;