Linux Bash脚本练习4 : 脚本选项进阶

1.任务描述

写一个脚本,可以接受选项和参数,并能根据选项和参数做出特定操作。如:

adminusers.sh --add tom,jerry 

adminusers.sh --del tom,blair 

adminusers.sh -v|--verbose  --add tom,jerry 

adminusers.sh -v|--verbose  --del tom,blair 

adminusers.sh -h|--help


2.我写的脚本如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/bin/bash
info="Usage `basename $0` --add USER1,USER2,... | --del USER1,USER2,... [-v|--verbose] | [-h|--help]"
if [ $# -lt 1 ] ; then
   echo $info 
   exit 7
fi
declare -i verboseFlag=0
case $1 in
-h|--help)
  echo $info
  exit 7
;;
-v|--verbose)
  verboseFlag=1
  shift
;;
esac
case $1 in
--add)
   [ -z $2 ] && echo $info && exit 
   for in `echo $2 | sed 's/,/ /gi'` ; do
      if id $i &>/dev/null then
         useradd $i  
         [ $verboseFlag -eq 1 ] && echo "add $i success"
      else
         [ $verboseFlag -eq 1 ] && echo "$i is exits"
      fi
   done
;;
--del)
   [ -z $2 ] && echo $info && exit 8
   for in `echo $2 | sed 's/,/ /gi'` ; do
       if id $i &>/dev/null then
          [ $verboseFlag -eq 1 ] && echo "no such user : $i"
       else
          userdel -r $i  
          [ $verboseFlag -eq 1 ] && echo "delete user : $i success"
       fi
   done
;;
esac


3.心得

第一,以前使用LINUX的命令,很多都带有-v选项,用于显示详细信息。现在我也可以来实现这种VERBOSE功能。其实就是一个标志,决定是否进行信息输出的。【要知道LINUX的思想是没有消息就是好消息!】


第二,由于选项之间可以组合,比如-v和--add。如果不出现-v呢?在上面的脚本中,使用到了shift。如果有-v,那么设定标志,同时shift,为后面的CASE流程准备位置变量。


第三,有些时候,CASE写法较IF更加简洁。


本文转自zfz_linux_boy 51CTO博客,原文链接:http://blog.51cto.com/zhangfengzhe/1428414,如需转载请自行联系原作者



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值