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,如需转载请自行联系原作者



相关文章
|
4月前
|
Java Linux
自定义linux脚本用于快速jar包启动、停止、重启
自定义linux脚本用于快速jar包启动、停止、重启
226 29
|
4月前
|
安全 Linux
Slax Linux如何获取增强的会话管理与启动参数选项
以上就是关于在Slax Linux中获取增强的会话管理与启动参数选项的全过程。虽然在这个过程中可能会遇到暗礁和风浪,但只要我们用心驾驶,总能找到前行的道路。在旅程中,记得享受这中间的点点滴滴,因为这些都是你成长的痕迹。祝你在这片“数码海洋”中一帆风顺!
83 26
|
4月前
|
Linux Shell 数据安全/隐私保护
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
240 3
|
4月前
|
Linux Shell
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
108 4
|
5月前
|
Linux Shell
在Linux、CentOS7中设置shell脚本开机自启动服务
以上就是在CentOS 7中设置shell脚本开机自启动服务的全部步骤。希望这个指南能帮助你更好地管理你的Linux系统。
325 25
|
5月前
|
安全 Linux
阿里云linux服务器使用脚本通过安全组屏蔽异常海外访问ip
公网网站可能会遭受黑客攻击导致访问异常,使用此脚本可以屏蔽掉异常IP 恢复访问。也可自行设置定时任务定期检测屏蔽。
390 28
|
12月前
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
7月前
|
Shell Linux
【linux】Shell脚本中basename和dirname的详细用法教程
本文详细介绍了Linux Shell脚本中 `basename`和 `dirname`命令的用法,包括去除路径信息、去除后缀、批量处理文件名和路径等。同时,通过文件备份和日志文件分离的实践应用,展示了这两个命令在实际脚本中的应用场景。希望本文能帮助您更好地理解和应用 `basename`和 `dirname`命令,提高Shell脚本编写的效率和灵活性。
522 32
|
12月前
|
安全 Linux Shell
Linux上执行内存中的脚本和程序
【9月更文挑战第3天】在 Linux 系统中,可以通过多种方式执行内存中的脚本和程序:一是使用 `eval` 命令直接执行内存中的脚本内容;二是利用管道将脚本内容传递给 `bash` 解释器执行;三是将编译好的程序复制到 `/dev/shm` 并执行。这些方法虽便捷,但也需谨慎操作以避免安全风险。
353 7
|
7月前
|
存储 Linux 网络安全
linux应急响应检查脚本
通过这个脚本,可以快速收集系统的关键信息,有助于在发生问题时进行及时的应急响应和分析。
222 34