循环语句与函数

一、循环语句

1、for循环语句

(1)格式

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

(2)for循环流程图

(3)示例

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

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

 进阶版:从文档中调用用户的名称创建用户

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

编写脚本

 

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

创建文件添加ip地址

 脚本

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

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

创建一个文本

脚本

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

 2、while循环

(1)while语句结构

while 条件测试操作
do
命令序列
done              
 
 
列
while 未猜中正确价格
do
 反复猜测商品价格
done

(2)while语句运行流程图

 (3)示例

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

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

 

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

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

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

 

示例6:用while语句实现监控系统资源并邮件警告(具体设置关联QQ邮件看前面博客)

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

 3、until语句

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

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

 (2)until循环流程图

(3)示例

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

 二、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 $4....${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:用递归函数实现能计算阶乘的脚本

 三、数组的运用

 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:冒泡排序

代码


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值