Bash玩转脚本2之自己的脚本管理工具

来源:互联网 发布:php 负载均衡解决方案 编辑:程序博客网 时间:2024/05/20 06:53

Bash之打造自己的脚本管理工具

前言


有了自己的脚本安装工具之后,其实也算有了部分自己的脚本管理模式(脚本放到scriptPath目录下,然后通过install.sh安装到binPath目录,所有路径配置在config.ini中)。

传送门:
Bash玩转脚本1之自己的脚本安装程序
http://blog.csdn.net/yang8456211/article/details/51020797


对于上篇文章中有两个地方需要进行修改。

1、第一个config.ini(配置文件)的放置目录,开始放在了scriptPath目录下,使用起来觉得不妥,于是便放到了HOME目录下面,这样所有脚本就都可以通过source ~/config.ini进行读取配置而不用考虑相对路径的问题了。
2、第二个修改就是对于editor(作者介绍)部分直接放在了config.ini里,这样就不用每个脚本拷贝同一份代码了(算是抽象?^^)。

    下面言归正传写写今天好玩的东西。

脚本管理工具干了什么

对脚本进行统一的管理,同时做到方便添加新功能。我把脚本取名为ywork.sh,并写了几个小功能作为例子。

一、获取用户输入

使用getopts获取用户的输入,并进行判断,这里以a/h/e三个功能为例。
while getopts "a:he" arg do    case $arg in        a)            showAllScript $OPTARG            ;;        h)            help_fun            ;;        e)            modifyConfig            ;;        ?)              echo "Unkonw argument Abort(101)"             exit 101        ;;    esacdone
  • 指令后面有冒号的代表该指令紧接着需要一个参数
  • 参数放在$OPTARG里面

二、查看帮助(-h)

    查看帮助的实现即是使用cat显示一段写好的文本,这里的ENTER只是一个标示,可以换成其他任何字符串。
help_fun(){cat << ENTER     ============= 脚本管理工具 =============     Version: 0.1     Date: 20160406     Usage: 用于管理脚本的工具     e.g.: sh ywork.sh -a (list/detail): Show all script and Usage                          -h : Help                       -e : Edit config.ini     ============= 脚本管理工具 =============ENTER}

三、修改配置文件(-e)

配置文件放在了HOME目录下,我们只需要vi ~/config.ini 便可以进行修改了~
modifyConfig(){    vi ~/config.ini}

四、列出所有脚本(-a detail/list)

思想是遍历binPath目录(脚本安装路径)下面的所有脚本名称做显示,添加了一个参数用于选择显示脚本列表还是详细内容。
showAllScript(){    # binPath config.ini 里读取的脚本安装的目录    for i in `ls $binPath`    do        if [[ $1 == "detail" ]];then            echo -e "\033[31m_________ "$i" _________\033[0m"            eval $i            echo        elif [[ $1 == "list" ]];then            echo $i        fi    done}
  • 当参数为list的时候,echo出脚本的名称进行显示。
  • 当参数为detail的时候,显示脚本名称的同时,使用eval执行该脚本。(因为每个脚本在无参的情况下会打印出自己写的脚本说明,如果需要查询某个特定的脚本可以用通道grep一下)

五、使用看看

  1. ywork -h
  2. ywork -e (直接打开了vi编辑器进行编辑)
  3. ywork -a list (显示哪些脚本可以使用)
  4. ywork -a detail

完整代码

#!/bin/bashsource ~/config.inihelp_fun(){cat << ENTER     ============= 脚本管理工具 =============     Version: 0.1     Date: 20160406     Usage: 用于管理脚本的工具     e.g.: sh ywork.sh -a (list/detail): Show all script and Usage                          -h : Help                       -e : Edit config.ini     ============= 脚本管理工具 =============ENTER}modifyConfig(){    vi ~/config.ini}showAllScript(){    # binPath config.ini 里读取的脚本安装的目录    for i in `ls $binPath`    do        if [[ $1 == "detail" ]];then            echo -e "\033[31m_________ "$i" _________\033[0m"            eval $i            echo        elif [[ $1 == "list" ]];then            echo $i        fi    done}[[ $# == 0 ]] && echo "==>ywork -h 查看帮助" && editor && exit 100# 选项后面的冒号表示该选项需要参数,参数存在$OPTARG中while getopts "a:he" arg do    case $arg in        a)            showAllScript $OPTARG            ;;        h)            help_fun            ;;        e)            modifyConfig            ;;        ?)              echo "Unkonw argument Abort(101)"             exit 101        ;;    esacdone

杨光(atany)原创,转载请注明博主与博文链接,未经博主允许,禁止任何商业用途。
博客地址:http://blog.csdn.net/yang8456211
博文地址: http://blog.csdn.net/yang8456211/article/details/51069625
本文遵循“署名-非商业用途-保持一致”创作公用协议

1 0