2019-12-18bash脚本编程四——case语句

case语句

——选择结构
用法

case SWITCH(引用变量) in
value1)
    statement
    ...
    ;;
value2)
    statement
    ...
    ;;
*)
    statement
    ...
    ;;
esac

例子

  1. 只接受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
  1. 写一个脚本,当用户输入-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       
  1. 写一个脚本show logged.sh,其用法格式为:showlogged.sh -v -c -h|--help,其中,-h选项只能单独使用,用于显示帮助信息;-c选项时,显示当前系统上登录的所有用户数;如果同时使用了-v选项,则既显示同时登入的用户数,又显示登入用户的相关信息;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容