循环语句与函数

一、循环语句

1、for循环语句

(1)格式

for 变量名 in 取值列表
do
命令序列
done


列
for 收件人 in 邮件地址列表
do
发送邮件
done

(2)for循环流程图

(3)示例:

示例1:使用for循环编写简单的脚本显示出30以内的2的倍数

示例2;使用for循环编写简单的脚本实现可以批量创建用户的功能

 升级版从文档中调用用户的名称创建用户

(1)先创建一个文档输入员工的姓名

 示例3:使用for循环实现根据IP地址列表检查主机的状态

创键文件

 运行脚本

 示例4;使用for循环实现一个用户输错五次密码提示密码有误并退出登录的简单shell脚本

  示例5;使用for循环实现一个抽奖的简单shell脚本

创建一个文本文档

 编写脚本

示例六:for循环实现简单显示脚本

 2、while语句

(1)while语句结构

while 条件测试操作
do
命令序列
done              


列
while 未猜中正确价格
do
 反复猜测商品价格
done

(2)while语句运行流程图

 (3)示例

示例1:实现简单的while循环脚本

 示例2:用while语句实现过滤出3的倍数并显示其他的数

 示例3:用while语句实现循环监控Apache的运行状态

示例4:用while语句实现猜数字小游戏脚本

示例5:用while语句实现批量创建用户并设置初始密码

 示例6:用while语句实现人机交互的猜数字小游戏

示例7:用while语句实现监控系统资源并邮件警告

示例8:用while语句实现简单的军火商店购物

 3、until语句

重复测试某个条件,只要条件不成立则反复执行

(1)结构

until 条件测试操作
do
命令序列
done

(2) 语句流程图

 (3)示例

示例1:用until语句计算1-50的和值

 二、Shell函数

将命令序列按格式写在一起

可方便重复使用命令序列

1、函数基本格式

[function] 函数名(){
  命令序列
[return x]                           #使用return或exit可以显示的结束函数 
}


或者

                                     #也可以省略掉[function],它表示该函数的功能

函数名() {                            #函数名后面()是没有内容的
  命令序列                            #我们执行的命令内容放在{}里面
}
  • 函数定义完之后并不会自动执行,需要调用才行
  • 好处在于可以写一段功能代码作为函数,有需要就直接调用定义的时候哪怕出现语法错误也没关系,不调用就不会报错
  • 当然我们写函数最终目的还是为了调用,为了实现某个功能块。

2、函数返回值

return表示退出函数并返回一个退出值,脚本中可以用$? 变量显示该值使用原则

函数一结束就取返回值,因为$?变量只返回执行的最后一条命令的退出状态码

退出状态码必须是0~255,超出时值将为256取余

3、函数的作用范围

函数在shell脚本中仅在当前shell环境中有效

shell脚本中变量默认全局有效

将变量限定在函数内部使用local命令

4、函数的参数

参数的用法

函数名称 参数1 参数2 参数3 ......

参数的表示方法

$1 $2 $3......${10} ${11}

5、函数应用示例

(1)示例1简单函数调用

(2)示例2用函数实现一键安装yum源仓库的shell脚本

#!/bin/bash
function backuprepo {
cd /etc/yum.repos.d
mkdir repo.bak
mv *.repo repo.bak
mount /dev/sr0 /mnt > /dev/null
}

makelocalrepo(){
echo '[local]
name = local
baseurl=file:///mnt
enabled=1
gpgcheck=0' > local.repo
}

uselocalrepo (){
yum clean all > /dev/null
yum makecache > /dev/null
yum install -y httpd > /dev/null

}



#==========mian============
backuprepo
makelocalrepo
uselocalrepo

 (3)示例3用函数实现计算两数之和的脚本

 (4)示例4 local的用法

函数内部变量通过local来实现

通过定义myfun函数,在其内部设置局部变量!

函数内部和外部分别赋值,进行结果验证

 (5)示例5 调用函数实现删除文件操作

 

 (6)示例6 调用函数实现判断文档是否为文件

 6、递归函数

递归函数就是调用自己本身的函数

(1)示例1:列出目录文件列表,目录用颜色表示(蓝色),文件显示层级关系

$2:打印出目录下的文件变量也就是$1下的子目录

 去掉$2的显示结果 不会显示目录下的内容

(2)示例二:用递归函数实现能计算阶乘的脚本

三、数组的运用

1、数组的定义

数组是存放相同类型数据的集合,在内存中开辟了连续的空间,通常配合循环使用

2、数组的分类

普通数组:不需要声明直接定义,下标索引只能是整数

关联数组:需要用declare -A声明否则系统不识别,索引可以是字符串

3、数组的定义方式

(30 20 10 888 992 12)
  0  1  2   3   4   5  #为数组的索引只能是整数

第一种定义方式:直接把要加入数组的元素用小括号括起来,中间用空格分开
num=( 1  2  3  4 )
$(#num) 显示字符串长度
数组名=(value0 value1 value2)

第二种定义方式:精确的给每一个下标索引定义一个值加入数组,索引数字可以不连续
num=([0]=55 [1]=34 [2]=38 [3]=29)
 数组名=([0]=value [1] =value [2] =value...)

 第三种:先把要加入数组的元素全部先赋值给一个变量,然后引用这个变量加入到数组
list="11 22 33 44"
num=($list)
列表名="value0 value1 value2..."
数组名=($列表名)

第四种:根据下标定义
数组名[0]="11"
数组名[0]="22"
数组名[0]="33"

数组名[0]="value"
数组名[1]="value"
数组名[2]="value"

4、示例

(1)显示字符串长度

 (2)套用数组中的指定数组

(3)脚本简单的数组写法

(4)示例4:冒泡排序

编辑代码如下

 运行结果

三、总结

本章主要讲解了for循环、while循环、until循环的使用方法和简单案例。以及函数的使用方法和简单案例。适合小白及初级运维工程师查看和学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值