Bash脚本编写初体验

    上周例会的时候,冷不丁的接到了维护原有的安装脚本和编写升级、卸载脚本的任务,PM和几个同事一本正经的说,一天甚至30分钟就可以精通shell脚本编写,哪怕没有语言基础也可以。

    当然,作为有着C++、Python语言学习经验的我,还是很清楚,难点不在语言上,难点在于脚本的逻辑完整性。毕竟没有经验,即便遇到不清楚的命令,上网查也可以,关键怕的是无从着手,要想短时间精通还是不太可能的。好在shell语言确实足够简单,因此也未尝不可能。

    不过这里要说一句题外话,就是目前公司项目的安装方式实在是简陋,虽说系统是安装在linux系统上的,但客户毕竟不一定都懂linux,他们更想要的是跟windows一样的傻瓜式安装体验,无非是点击安装,Next、Next这样一直到finished。而目前项目最简单的安装方式是,上传安装包到服务器,先unzip,然后执行install1,重启之后执行install2,install3……;而因为缺少升级脚本和卸载脚本,所以往往还需要手动stop_all,并rm -rf安装目录文件,再停止一些服务占用;而更复杂的版本还需要客户手动修改配置文件……  所以我的目标计划如下:针对目前各版本编写卸载脚本-->完善最近几个大版本的安装脚本(主要是修正错误)-->对应升级脚本的编写-->一键式安装卸载脚本的编写


    言归正传,我的Bash脚本编写之路是这样的。

    第一步,先用了一天半的时间学习完shell脚本编写的系统知识,参考网址http://outofmemory.cn/shell/learn-shell-in-30-minutes/,很详细也很系统。这样基本功就有了。

    第二步,用了两天时间,把公司的安装脚本拆解到每个文件夹,每个子脚本和配置文件内容,写了整整十页纸。这就是把理论和实践结合了,好处如下:

    一是结合脚本和所学知识,更容易强化记忆;

    二是看现成的脚本可以系统理解编写思路;

    三是刚好和目标结合,不容易迷茫。

    注意:这个过程主要是记载每个脚本的完成内容,方便后续查阅,重点不在命令的用法理解,后续需要用到时再详细学习。

    第三步,就是实践阶段了。把整个install过程串起来,发现先后都安装了哪些服务、赋予了哪些环境变量、修改了哪些系统文件、开启了哪些自启动服务、运行了哪些进程、创建了哪些文件和文件夹,然后判断哪些是卸载后应当保留的、哪些是可以询问用户保留与否的、哪些是一定要删除的,最后按照优先顺序(依赖关系),依次进行停止、恢复、卸载、删除操作。至此,卸载脚本完成。脚本中注意随时出现提示,保证互动性;卸载前把重要文件予以备份,以防止卸载后恢复安装。

    第四步,就是进阶了。灵活运用,发现之前的错误,用更简洁明了,方便修改升级的方式编写脚本。

    <未完待续>

原文地址:https://www.cnblogs.com/jiukun/p/7011113.html