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

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,并写了几个小功能作为例子。

Bash玩转脚本2之自己的脚本管理工具_第1张图片

一、获取用户输入

使用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
        ;;
    esac
done
  • 指令后面有冒号的代表该指令紧接着需要一个参数
  • 参数放在$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
    Bash玩转脚本2之自己的脚本管理工具_第2张图片
  2. ywork -e (直接打开了vi编辑器进行编辑)
    Bash玩转脚本2之自己的脚本管理工具_第3张图片
  3. ywork -a list (显示哪些脚本可以使用)
    Bash玩转脚本2之自己的脚本管理工具_第4张图片
  4. ywork -a detail
    Bash玩转脚本2之自己的脚本管理工具_第5张图片

完整代码

#!/bin/bash 
source ~/config.ini

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
}

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
        ;;
    esac
done

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

你可能感兴趣的:(脚本,bash,getopts,脚本管理)