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过程串起来,发现先后都安装了哪些服务、赋予了哪些环境变量、修改了哪些系统文件、开启了哪些自启动服务、运行了哪些进程、创建了哪些文件和文件夹,然后判断哪些是卸载后应当保留的、哪些是可以询问用户保留与否的、哪些是一定要删除的,最后按照优先顺序(依赖关系),依次进行停止、恢复、卸载、删除操作。至此,卸载脚本完成。脚本中注意随时出现提示,保证互动性;卸载前把重要文件予以备份,以防止卸载后恢复安装。
第四步,就是进阶了。灵活运用,发现之前的错误,用更简洁明了,方便修改升级的方式编写脚本。
<未完待续>
Bash脚本编写初体验的更多相关文章
- 一个很不错的bash脚本编写教程
转自 http://blog.chinaunix.net/uid-20328094-id-95121.html 一个很不错的bash脚本编写教程,至少没接触过BASH的也能看懂! 建立一个脚本 Lin ...
- bash脚本编写基础
bash脚本编程 命令的堆砌 脚本程序:解释器解析执行 shell:交互式接口,编程环境 shell:能够提供一些内部命令,并且能通过PATH环境变量找到外部命 ...
- Shell脚本编程初体验
原文:http://linoxide.com/linux-shell-script/guide-start-learning-shell-scripting-scratch/ 作者: Petras L ...
- linux base脚本编写-自动领取微信红包
bash脚本编写 语法 变量 定义: your_name = "ABC" 使用: echo $your_name 只读变量 a = "123" readonly ...
- vim编写Bash脚本
vim编写Bash脚本,可以说是类unix系统下的原生应用啊,想到初vi编辑器可是每个unix自带的哦. 缩进:在.vimrc中添加 filetype plugin indent on 未完待续,以后 ...
- 在ubuntu linux 中编写一个自己的bash脚本
在ubuntu linux 中编写一个自己的简单的bash脚本. 实现功能:终端中输入简单的命令(以pm为例(play music)),来实现音乐的播放.注:本人ununut中安装了audacious ...
- 从此编写 Bash 脚本不再难【转】
从此编写 Bash 脚本不再难 原创 Linux技术 2017-05-02 14:30 在这篇文章中,我们会介绍如何通过使用 bash-support vim 插件将 Vim 编辑器安装和配置 为一个 ...
- Linux中编写Bash脚本的10个技巧
Shell 脚本编程 是你在 Linux 下学习或练习编程的最简单的方式.尤其对 系统管理员要处理着自动化任务,且要开发新的简单的实用程序或工具等(这里只是仅举几例)更是必备技能. 本文中,我们将分享 ...
- ipython及Python初体验
阅读目录: Python环境体验 Python编辑器 ipython安装 Python提示符 Python初体验 print和变量 变量操作 内建函数:方法 数学运算:简单算术.随机数 关于模块 一. ...
随机推荐
- 读书笔记_MVC__关于通过js构建ORM,实现Model层
最近一直在学习MVC构建富应用的WEB程序,自己一直对MVC的设计模式理解的不是十分透彻,终于在研读了github上Spine的源码之后,对构建Model层有了一点自己的理解. 本文仅为个人理解,如有 ...
- 关于解决mysql数据库乱码的问题
最近在开发的过程中频繁的使用到了mysql'这款数据库,mysql的中文乱码问题一直让人头疼.以前遇到过几次,但是都一不小心就解决了,这次终于明白到底是怎么回事了.可能我下面手的这种解决方案只适合于我 ...
- jsp 之 解决 Mysql net start mysql启动,提示发生系统错误 5 拒绝访问的问题
在dos下运行net start mysql时 !!!提示发生系统错误 5:拒绝访问!只要切换到管理员模式就可以启动了. 所以我们要以管理员身份来运行cmd程序来启动mysql. 1.在开始菜单的搜索 ...
- 利用dbutils工具实现数据的增删查改操作(dbutis入门)
一.前期准备 1.安装数据库(如:mysql5.5) 2.安装Eclipse(如:3.4) 3.下载数据库驱动包 4.下载dbutis工具包 5.在Eclipse创建名为 dbutils 的工程并在工 ...
- 【模板】HDU--1233 畅通工程
省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).经过调查评估,得到的统计表中列出了有可能建设公路的若干 ...
- .NET访问数据库的两种方式(C#语言)
一.直接使用C#操作数据库的类库ADO.NETADO.NET使用Connection对象来连接数据库,使用Command或DataAdapter 对象来执行SQL语句,并将执行的结果返回给DataRe ...
- Linux - 简明Shell编程09 - 重定向(Redirection)
脚本地址 https://github.com/anliven/L-Shell/tree/master/Shell-Basics 示例脚本及注释 #!/bin/bash pwd > 1.log ...
- JavaScript获取和创建元素
1.JavaScript中获取元素 常用的获取document中元素的方法: 1) document.getElementById() =>通过元素ID获取文档中特定的元素,如获取 id = ...
- JavaScript高级程序设计 - 阅读笔记
[本博客为原创:http://www.cnblogs.com/HeavenBin/] 前言: 大致花费了一个星期的时间把这本书认真看了半本,下面是我做的阅读笔记,希望能够让看这本书的人有个大致的参考. ...
- butterknife的8.5.1版本问题
使用7.0.1版本没有问题compile 'com.jakewharton:butterknife:7.0.1'使用8.5.0版本时候,必须配合下面的compiler插件一起使用,否则会出现点击事件不 ...