运维工作不出事故的时候,我们的工作基本上很重复。很多大公司因为这个特性,都在实现运维自动化。我们也很羡慕大公司的运维们,怎么办,自己动手打造自动化平台,开玩笑呢,别当真。我们把日常工作需要的命令写入脚本,每天我们都去执行一下,然后喝茶聊天打屁就好了。
写脚本都要哪些技能呢!首先我们要明白脚本的本质是什么?脚本就是基于bash解释器,写的一堆命令的集合。既然是命令集合那么他就有执行顺序,脚本的执行顺序是从上至下依次执行每一个命令(每一个命令就是每一行的命令),脚本处理什么东西,处理数据,这些数据既可以是不变的数据,也可以是我们临时想传给脚本的。接下来我一个个说构成脚本的部件:向脚本传的参数,变量,命令执行控制,数值测试,字符测试,文件测试。
我们学了很多命令,很多命令都有很多参数,我们也可以创造一个这样的命令。传参数很简单,在脚本内怎么引用。
$0 引用脚本名字
$# 引用第#个参数
$@ 一个一个的想脚本内部传参数
$* 把参数以一个字符串向内部传递
有时我们需要的一个数据,需要两个数据相加得到,而这两个数据我们不能一次全部得到,这时我们需要先把数据暂存一个东西内。我们把这个暂存数据的东西,叫变量。
变量暂存数据,它存什么数据,是整数还是浮点数还是字符串。在Linux中的脚本,模糊了数据类型,都放到同一个变量。之所以规定数据类型不仅仅是为了运算,同时也可以省空间。
Linux是多用户系统,我们声明一个变量后和隔壁声明的变量同名咋办?嗯,linux把变量作用的范围进行了规范。
环境变量:这个变量声明后,它不仅仅对自己有效,它就像基因会遗传给他的子进程。
本地变量:只对自己有效
局部变量:只对一部分函数(就好比linux中的命令)有效。
引用变量的时候使用:$变量名
有时我们写脚本需要根据不同的情景显示不同的数据,在一般的编程语言有控制语句和执行流控制语句,bash中也有,这里我们只说最简单的控制方法。
脚本执行的时候,是每一行每一行的向下逐行执行。那我们控制它只执行一部分命令就需要,把两个不同的语句放在一行。控制符有这两个:
&& 它的功能,前一个命令执行成功,后一条命令才会执行
|| 它的功能,前一个命令执行失败,后一条命令才会执行
If
For
数值运算是每个命令必不可少的功能,bash的运算符合有以下几种:
逻辑运算
& 与
| 或
! 非
算术运算
+ 加
- 减
* 乘
/ 除,得整数
% 取模,求余
运算符有了,比较运算也不能少
-gt 大于
-ge 大于等于
-eq 等于
-ne 不等于
-lt 小于
-le 小于等于
不说了字符串测试,也是必须的
==
> 逐个字符比较
<
!=
=~ 左侧能否右侧匹配
忘了
。。。。。。。。
1文件类型测试
-e
-f
-d
-L|-h
-c
-b
-p
-S
2权限测试
-r
-w
-x
-u
-g
-k
3属性
-s
-O
-G
4双目测试
-ef
-nt
-ot
脚本怎么向外,申请参数,就像passwd命令。
Read-p“”
交互式脚本和我们的关系不是很大,合理运用脚本我们的工作会大大减轻,运用前我们要熟悉脚本各命令的逻辑关系,熟悉脚本书写的格式,方便我们使用和判断脚本执行失败的排错。
$#
本文出自 “老王linux旅程” 博客,请务必保留此出处http://oldking.blog.51cto.com/10402759/1876851
原文地址:http://oldking.blog.51cto.com/10402759/1876851