Bash玩转脚本2之自己的脚本管理工具
Posted 小杨在玩iOS
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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,并写了几个小功能作为例子。
一、获取用户输入
使用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一下)
五、使用看看
- ywork -h
- ywork -e (直接打开了vi编辑器进行编辑)
- ywork -a list (显示哪些脚本可以使用)
- ywork -a detail
完整代码
#!/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玩转脚本2之自己的脚本管理工具的主要内容,如果未能解决你的问题,请参考以下文章
Bash玩转脚本4之搞一套完整的Android反编译与分包工具