自动化运维必须要学的Shell脚本之——循环语句(for、while和until循环)
1. 循环前先了解echo的使用
1.1 echo -n 表示不换行输出

1.2 echo -e 输出转义字符,将转义后的内容输出到屏幕上
常见的转义字符有:
1.2.1 \b 相当于退格键
转义后相当于退格键(backspace),但是前提是“\b”存在字符。“\b”表示删除前一个字符,“\b\b”表示删除前面两个字符。

1.2.2 \c 不换行输出
不换行输出,在“\c”后面不存在字符的情况下,作用相当于echo -n,但是当“\b”后面仍然存在字符时,“\c”后面的字符将不会被输出。

1.2.3 \n 换行输出
换行输出,被输出的字符从"\n"出开始另起一行。

1.2.4 \f 、\v 换行输出
换行输出,但是换行后新行的开头位置连接着上一行的行尾。

“\v”的输出结果和“\f” 一样

1.2.5 \t 制表符显示
转义后表示插入横向制表符,即tab。

1.2.6 \r 光标移至行首不换行
光标移至行首,但是不换行,相当于使用“\r”之后的字符覆盖“\r”之前同等长度的字符,但是当“\r”后面不存在任何字符时,“\r”前面的字符不会被覆盖;当“\r”后面存在的字符大于前面时,“\r”前面的字符全部会被后面替代,按后面字符的长度。

1.2.7 \\ 表示符号本身
在转义符前面加入转义符,代表将后面的转义符转义为符号本身,也就是 \ 。

案例:使用echo直接将yum本地源的配置命令重定向到配置文件内。

1.2.8 echo 的其他用法,删除和获取字符串的内容
删除字符的方法

截取字符的方法:

增加字符串的方法:

2. for循环
for循环经常使用在已经知道要进行多少次循环的场景
1.语法:
for 变量名in 取值列表
do
命令序列
done

2.练习实例:循环出0到10之间(包括10)的整数

实例:由于系统上面的各种账号都是写在/etc/passwd内的第一个字段,通过管道命令cut识别出单纯的账号名称号,以id分别检查用户的标识符和特殊参数。知识点:截取文件的字段。这个操作还可以用在每个账号的删除。

3. while循环和until循环
while循环可以不断的执行某个程序,直到用户设置的条件完成为止,所以重点是条件,这种不定循环最常见的就是下面这两种格式了。
1.格式:
while循环:while的中文是【当…时】,所以这种方式说的是,当判断式/命令序列的条件成立时,就进行循环,直到命令序列/程序段落的条件不成立才停止。
4. 嵌套循环
在循环内部再使用一个循环称为嵌套循环
#!/bin/bash
for ((i=1;i<5;i++))
do
echo 此${i}为外部循环
for((j=1;j<4;j++))
do
echo -e "\t此${j}为内部循环"
done
done

5. 循环语句中的break、exit和continue
5.1 break的使用
当满足条件的情况下break会跳出当前循环体,如下
#!/bin/bash
for ((i=1;i<5;i++))
do
echo 此${i}为外部循环
for((j=1;j<4;j++))
do
if [ $j -eq 3 ] <------如果j的值为3
then
break <------跳出当前循环(内部)
fi
echo -e "\t此${j}为内部循环"
done
done
5.2 exit的使用
当满足条件的情况下exit会直接退出当前脚本,如下
#!/bin/bash
for ((i=1;i<5;i++))
do
echo 此${i}为外部循环
for((j=1;j<4;j++))
do
if [ $j -eq 3 ] <------如果j的值为3
then
exit <------结束当前脚本
fi
echo -e "\t此${j}为内部循环"
done
done
5.3 continue的使用
continue中止某次循环中的命令,但不会完全中止整个命令,如下:
#!/bin/bash
for ((i=1;i<5;i++))
do
echo 此${i}为外部循环
for((j=1;j<4;j++))
do
if [ $j -eq 2 ] <------如果j的值为2
then
continue <------中止循环中本次的命令,但不会完全中止整个循环或脚本
fi
echo -e "\t此${j}为内部循环"
done
done
自动化运维必须要学的Shell脚本之——循环语句(for、while和until循环)的更多相关文章
- 面试linux运维一定会问到Shell脚本这24个问题
面试linux运维一定会问到Shell脚本这24个问题 虽然现在Python在运维工作中已经使用很普遍,但是很多企业在找Linux云计算工程师的时候还是会问到 shell 脚本的问题,它有助于你在工作 ...
- 自动化运维:(2)Shell 编程的流程控制
一. if语句 1.单分支if语句——单一条件,只有一个输出 #!/bin/bash # 单if语句的使用场景 if [ "$1" == "nan" ] the ...
- Linux Shell交互式自动化运维程序
Expect是Linux操作系统下的一个用来处理交互操作,系统默认是没有安装expect库,所以执行expect会提示找不到命令,需要手动安装,其它安装也比较简单,可以通过二进制源码包编译配置进行安装 ...
- Python自动化运维的职业发展道路(暂定)
Python职业发展之路 Python自动化运维工程 Python基础 Linux Shell Fabric Ansible Playbook Zabbix Saltstack Puppet Dock ...
- 自动化运维工具-Ansible之5-流程控制
自动化运维工具-Ansible之5-流程控制 目录 自动化运维工具-Ansible之5-流程控制 playbook条件语句 单条件 多条件 多条件运算 示例 playbook循环语句 with_ite ...
- 自动化运维—tomcat服务起停(mysql+shell+django+bootstrap+jquery)
项目简介: 项目介绍:自动化运维是未来的趋势,最近学了不少东西,正好通过这个小项目把这些学的东西串起来,练练手. 基础架构: 服务器端:web框架-Django 前端:html css jQuery ...
- 简单的自动化运维工具(shell+except+whiptail+功能模块化函数+循环)
简单的自动化运维工具(shell+except+whiptail+功能模块化函数+循环) http://www.cnblogs.com/M18-BlankBox/p/5881700.html
- 自动化运维:(1)认识 Shell
目录 (一)运维是什么? (二)什么是 Shell? (三)Shell的分类 (四)Shell脚本 (五)Shell的变量 (六)表达式 (七)Linux常见符号 (八)常见命令 (一)自动化运维是什 ...
- 自动化运维:网站svn代码上线更新(flask+saltstack)
阶段性总结: 跌跌撞撞的用了一周左右的时间做完了网站自动升级功能,中间遇到了很多的问题,也学到了很多,在此做一个总结. 1.整体架构: 后台:nginx+uwsgi #nginx提供w ...
随机推荐
- Go语言标准库log介绍
Go语言标准库log介绍 无论是软件开发的调试阶段还是软件上线之后的运行阶段,日志一直都是非常重要的一个环节,我们也应该养成在程序中记录日志的好习惯. log Go语言内置的log包实现了简单的日志服 ...
- 如何在Python中加速信号处理
如何在Python中加速信号处理 This post is the eighth installment of the series of articles on the RAPIDS ecosyst ...
- CodeGen处理Synergy方法目录
CodeGen处理Synergy方法目录 如果Synergy应用程序开发环境包括使用Synergy/DE xfServerPlus,则可以基于Synergy方法目录中包含的元数据生成代码.要启用此功能 ...
- 基于Linux的TCP网络聊天室
1.实验项目名称:基于Linux的TCP网络聊天室 2.实验目的:通过TCP完成多用户群聊和私聊功能. 3.实验过程: 通过socket建立用户连接并传送用户输入的信息,分别来写客户端和服务器端,利用 ...
- AJAX第二天笔记
AJAX day1 jquery中的ajax 拦截请求: $.ajaxPrefilter() jquery方法请求参数的本质: 无论我们填写的何种形式的参数,都会被jQuery转换成查询字符串形式传 ...
- 『居善地』接口测试 — 11、接口签名sign原理
目录 1.什么是加密以及解密? 2.加密方式的分类 (1)对称加密 (2)非对称加密 (3)总结: 3.接口签名sign原理 (1)什么是接口签名? (2)为什么需要做接口签名 (3)接口签名的实践方 ...
- .NET平台系列26:在 Windows 上安装 .NET Core/.NET5/.NET6
系列目录 [已更新最新开发文章,点击查看详细] 本文介绍如何在 Windows 上安装 .NET. .NET 由运行时和 SDK 组成. 运行时用于运行 .NET 应用,应用可能包含也可能不包 ...
- 【NX二次开发】UF_CSYS_map_point()函数,绝对坐标,工作坐标,部件之间坐标转换。
UF_CSYS_map_point用来变换点的坐标,比较简单且实用.例如工作坐标系与绝对坐标系转换,一个部件的坐标与另一个部件坐标系之间的转换.下面的例子是在三个坐标下创建三个点相对坐标为{10,50 ...
- VBS脚本编程(6)——对象的创建与调用
对象:严格的说,对象是复杂数据和程序结构在内存中的表现,只有在程序运行时才存在.包含有方法和属性. 对象的创建及用法 1. Set 语句 将对象引用赋给一个变量或属性,或者将对象引用与事件关联. Se ...
- 京东 Vue3 组件库支持小程序开发啦!
源码抢先看: https://github.com/jdf2e/nutui NutUI 3.0 官网:https://nutui.jd.com/3x/#/ 小程序多端适配 设计初衷 在跨端小程序的开发 ...