shell编程初始shellshell 定义shell的分类和切换使用场景shell 特性回顾bash 初始化shell 脚本规范变量的类型练习1练习二脚本运行创建bash脚本(shell脚本)bash脚本执行变量置换命令替换变量替换变量替换-匹配截取basename & dirname千锋云计算学院shell编程-流程控制shell编程-条件结构shell脚本之流程控制shell分支if语句shell 分支case语句shell编程-循环结构shell循环-for语句shell 循环while语句shell循环until语句shell 循环控制shift、continue、break、exit实战-shell版本jumpserver开发(堡垒机) 千锋云计算学院shell 编程-函数shell 函数function函数调用之二shell 编程-数组数组定义访问数组千 锋 云 计 算 学 院正则表达式RE No.1 正则表达式基本元字符No.2正则表达式拓展元字符正则判断shell 编程-grepgrep使用grep正则过滤千锋云计算学院shell 编程-SEDsed基本用法打印搜索替换多重编辑选项地址(定址)sed流编辑器命令用法及解析sed常见操作千 锋 云 计 算 学 院shell编程之awk一、awk简介二、awk的形式语法格式三、awk工作原理示例四、记录与字段相关内部变量:实战关系运算符号示例常见使用真实案例经典案例千 锋 云 计 算 学 院shell 编程-ExpectNo.1 expect的安装 --ansibleNo.2 expect的语法-------通过expect可以实现将交互式的命令变为非交互式执行,不需要人为干预(手动输入)实战非交互式ssh连接:作业shell 编程-运维脚本实战千 锋 云 计 算 学 院

 

shell编程

初始shell

shell 定义

shell的分类和切换

使用场景

shell 特性回顾

bash 初始化

shell 脚本规范

变量的类型

练习1
练习二

 

脚本运行

创建bash脚本(shell脚本)
bash脚本执行

变量置换

命令替换
变量替换
变量替换-匹配截取
basename & dirname

千锋云计算学院

shell编程-流程控制

shell编程-条件结构

shell脚本之流程控制

shell分支if语句
shell 分支case语句

示例2:

shell编程-循环结构

shell循环-for语句

测试成产环境的主机存活性,将up的ip保存在一个文件中,将down的ip保存在一个文件中

for循环批量创建用户

shell 循环while语句

完善系统工具的输出及操作性

shell循环until语句
shell 循环控制shift、continue、break、exit
实战-shell版本jumpserver开发(堡垒机)

ps:整理自己的思路,完善不足的地方

千锋云计算学院

shell 编程-函数

shell 函数function

函数声明

函数名 function_name,这就是你将使用它从其他地方在你的脚本调用。

取消函数

产生以下执行结果

函数调用之二

函数传参 在Shell中,调用函数时可以向其传递参数。在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参 数,$2表示第二个参数

示例

shell 编程-数组

数组定义
访问数组

当设置任何数组变量时,可以访问它

您可以访问数组中的所有项目通过以下方式之一:

示例

输出结果

疑难点 shell数组中"*" 和 "@" 区别

示例

执行结果

千 锋 云 计 算 学 院

正则表达式RE



No.1 正则表达式基本元字符
No.2正则表达式拓展元字符
正则判断

shell 编程-grep

grep命令是Globally search a Regular Expression and Print的缩写,表示进行全局的正则匹配并进行打印。grep的相关扩展命令包括egrep和fgrep,其中egrep支持更多的正则匹配,fgrep只进行字符的匹配,不支持正则表达式。

grep使用
grep正则过滤

千锋云计算学院

shell 编程-SED


sed:stream editor(流编辑器)的缩写是一种在线非交互式编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。

Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等

非交互式编辑器,一次处理一行内容。


sed基本用法

打印

sed 默认会输出文件的每一行,无论这行内容是否能匹配上匹配模式,参数p假如被匹配到的则会再输出一次。

p 是 sed 的内部命令,是 打印(输出) 的作用

搜索替换

sed会自动打印文件的每一行,同时查找模式匹配的行,找到后执行后面的命令,默认是 p 打印(不加 -n 的情况下)

多重编辑选项
地址(定址)

地址用于决定对哪些 进行编辑。地址形式可以是数字、正则表达式或二者的结合。如果没有指定地址,sed将处理输入文件中的所有行。

sed流编辑器命令用法及解析
sed常见操作

千 锋 云 计 算 学 院

shell编程之awk

一、awk简介

awk 是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。可以在命令行中使用,但更多是作为脚本来使用。

awk的处理文本和数据的方式是这样的,它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行操作。如果没有指定处理动作,则把匹配的行显示到标准输出(屏幕),如果没有指定模式,则所有被操作所指定的行都被处理。

awk分别代表其作者姓氏的第一个字母。因为它的作者是三个人,分别是Alfred Aho、Brian Kernighan、Peter Weinberger。

二、awk的形式语法格式

awk [options] 'commands' filenames

options:

-F 对于每次处理的内容,可以指定一个自定义的分隔符,默认的分隔符是空白字符(空格或 tab 键 )

三、awk工作原理

awk -F":" '{print $1,$3}' /etc/passwd

command:

示例
四、记录与字段相关内部变量:
实战
关系运算符号

实现 字符串的完全相等需要使用 ==

字符串需要使用双引号 != 表示不等于

比较表达式采用对文本进行比较,只有当条件为真,才执行指定的动作。 比较表达式使用关系运算符,用于比较数字与字符串。

关系运算符有 < 小于 例如 x<y > 大于 x>y <= 小于或等于 x<=y == 等于 x==y != 不等于 x!=y >= 大于等于 x>=y

示例

可以在模式中执行计算,awk都将按浮点数方式执行算术运算

&& 逻辑与, 相当于 并且 ||逻辑或,相当于 或者 ! 逻辑非 , 取反

常见使用

1.打印一个文件中的第2列和第5列

2.打印指定行指定列的某个字符

3.统计一个文件的行数

获取根分区的使用量

4.在awk中使用if条件判断

5.在awk中使用for循环

数组遍历--用来统计网站日志,tcp连接状态等。

真实案例
经典案例

作业---切割nginx的日志,统计PV\UV,出现次数最多的url等各种切割统计

千 锋 云 计 算 学 院

shell 编程-Expect

No.1 expect的安装 --ansible

[root@qfedu ~] yum -y install expect

实现批量修改密码,批量推送ssh的公钥,进行远程ssh连接,任何批量操作的基本都能处理。

No.2 expect的语法-------通过expect可以实现将交互式的命令变为非交互式执行,不需要人为干预(手动输入)

是一个免费的编程工具, 用来实现自动的交互式任务, 而无需人为干预. 说白了 expect 就是一套用来实现自动交互功能的软件

在实际工作中我们运行命令、脚本或程序时, 都需要从终端输入某些继续运行的指令,而这些输 入都需要人为的手工进行. 而利用 expect 则可以根据程序的提示, 模拟标准输入提供给程序, 从而实现自动化交互执 行. 这就是 expect

如果能够在工作中熟练的使用Shell脚本就可以很大程度的提高工作效率, 那么再搭配上expect这个时候很多工作都可以实现自动化进行。

实战非交互式ssh连接:

作业

shell 编程-运维脚本实战

千 锋 云 计 算 学 院