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一下)
五、使用看看
- ywork -h
- ywork -e (直接打开了vi编辑器进行编辑)
- ywork -a list (显示哪些脚本可以使用)
- 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
- Bash玩转脚本2之自己的脚本管理工具
- Bash玩转脚本1之自己的脚本安装程序
- Bash玩转脚本6之Git脚本
- Bash玩转脚本5之Windows上修改环境变量的脚本系统
- Bash玩转脚本5之Windows上修改环境变量的脚本系统
- 玩转Bash脚本:选择结构之if
- 玩转Bash脚本:选择结构之case
- 玩转Bash脚本:循环结构之for循环
- 玩转Bash脚本:循环结构之while循环
- Bash玩转脚本3之几个指令有趣的筛选京东评价
- Bash玩转脚本4之搞一套完整的Android反编译与分包工具
- Bash玩转脚本7之说好的用crontab搞个自动任务
- 玩转Bash脚本:test测试语句
- 玩转Bash脚本:特殊变量
- 玩转Bash脚本:特殊变量
- 玩转Bash脚本:数值计算
- 玩转Bash脚本:变量基本概念及其初始化
- linux之bash脚本
- CSproject文件总是在Solution中被修改PROJECT GUID问题
- Java学习笔记3-JDBC事务管理
- android ui 适配(tv)
- 深入探讨:unix多进程编程之wait()与waitpid()函数
- Markdown语法整理
- Bash玩转脚本2之自己的脚本管理工具
- 完全用linux工作,放弃windows
- 接口型模式之Adapter(适配器)模式
- 练习13:参数、解包、变量
- 分享机器学习——神经网络学习资料
- 匪夷所思的错误-16年蓝桥杯A组省赛的第七题-剪邮票
- uva 10801 Lift Hopping
- 今天我开通了博客
- Java克隆