上周例会的时候,冷不丁的接到了维护原有的安装脚本和编写升级、卸载脚本的任务,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过程串起来,发现先后都安装了哪些服务、赋予了哪些环境变量、修改了哪些系统文件、开启了哪些自启动服务、运行了哪些进程、创建了哪些文件和文件夹,然后判断哪些是卸载后应当保留的、哪些是可以询问用户保留与否的、哪些是一定要删除的,最后按照优先顺序(依赖关系),依次进行停止、恢复、卸载、删除操作。至此,卸载脚本完成。脚本中注意随时出现提示,保证互动性;卸载前把重要文件予以备份,以防止卸载后恢复安装。

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

<未完待续>

Bash脚本编写初体验的更多相关文章

  1. 一个很不错的bash脚本编写教程

    转自 http://blog.chinaunix.net/uid-20328094-id-95121.html 一个很不错的bash脚本编写教程,至少没接触过BASH的也能看懂! 建立一个脚本 Lin ...

  2. bash脚本编写基础

    bash脚本编程     命令的堆砌     脚本程序:解释器解析执行     shell:交互式接口,编程环境         shell:能够提供一些内部命令,并且能通过PATH环境变量找到外部命 ...

  3. Shell脚本编程初体验

    原文:http://linoxide.com/linux-shell-script/guide-start-learning-shell-scripting-scratch/ 作者: Petras L ...

  4. linux base脚本编写-自动领取微信红包

    bash脚本编写 语法 变量 定义: your_name = "ABC" 使用: echo $your_name 只读变量 a = "123" readonly ...

  5. vim编写Bash脚本

    vim编写Bash脚本,可以说是类unix系统下的原生应用啊,想到初vi编辑器可是每个unix自带的哦. 缩进:在.vimrc中添加 filetype plugin indent on 未完待续,以后 ...

  6. 在ubuntu linux 中编写一个自己的bash脚本

    在ubuntu linux 中编写一个自己的简单的bash脚本. 实现功能:终端中输入简单的命令(以pm为例(play music)),来实现音乐的播放.注:本人ununut中安装了audacious ...

  7. 从此编写 Bash 脚本不再难【转】

    从此编写 Bash 脚本不再难 原创 Linux技术 2017-05-02 14:30 在这篇文章中,我们会介绍如何通过使用 bash-support vim 插件将 Vim 编辑器安装和配置 为一个 ...

  8. Linux中编写Bash脚本的10个技巧

    Shell 脚本编程 是你在 Linux 下学习或练习编程的最简单的方式.尤其对 系统管理员要处理着自动化任务,且要开发新的简单的实用程序或工具等(这里只是仅举几例)更是必备技能. 本文中,我们将分享 ...

  9. ipython及Python初体验

    阅读目录: Python环境体验 Python编辑器 ipython安装 Python提示符 Python初体验 print和变量 变量操作 内建函数:方法 数学运算:简单算术.随机数 关于模块 一. ...

随机推荐

  1. 设计模式--单例模式(Singleton pattern)及应用

    单例模式 参考文档: 该文仅介绍spring的单例模式:spring 的单例模式 介绍原理:Spring的单例模式底层实现 参考书籍:漫谈设计模式:从面向对象开始-刘济华.pdf 1. 单例模式解析 ...

  2. (转)mybatis常用jdbcType数据类型

    1 MyBatis 通过包含的jdbcType类型 BIT FLOAT CHAR TIMESTAMP OTHER UNDEFINED TINYINT REAL VARCHAR BINARY BLOB ...

  3. 【D3】D3词汇表

    按字母顺序 axis:数轴或坐标轴表示两个维度上数据尺度的直线 bar chart:条形图 (参见Excel)以矩形宽度反映数值大小的图表形式 bar:条形以宽度反映数值大小的矩形(rect) bin ...

  4. zabbix 配置发送邮件报警

    标签:监控/SQLServer/Windows 概述 本篇文章主要介绍如何配置zabbix借助外部邮件进行发送邮件报警,zabbix通过配置文件调用mailx来进行邮件的发送.在Centos6以上的版 ...

  5. 一小时学会ECMAScript6新特性

    ECMAScript 简介 简称es,是一套标准,javascript就是使用这套标准的语言.主流的浏览器使用的是ECAMScript5,ECAMScript6(ECAMScript2015)是一涛新 ...

  6. 【 js 基础 】【 源码学习 】backbone 源码阅读(一)

    最近看完了 backbone.js 的源码,这里对于源码的细节就不再赘述了,大家可以 star 我的源码阅读项目(https://github.com/JiayiLi/source-code-stud ...

  7. centos下编译安装Openssl

    yum install -y zlib*mkdir /datacd /data下载好tar包tar zxf openssl-1.0.2g.tar.gzcd openssl-1.0.2g./config ...

  8. 使用Hibernate模板调用存储过程

    前提是该Dao类已经已经继承了org.springframework.orm.hibernate5.support.HibernateDaoSupport,并且在整个项目中已经配置好了事务,或者是手动 ...

  9. javascript 用Activex方法调用数据库中的数据,只可用于IE

    // JavaScript source code //创建数据库连接对象 var conn = new ActiveXObject("ADODB.Connection"); // ...

  10. Android利用canvas画画板

    首先新建一个项目工程,建立文件,如下图所示