Shell:循环语句与函数

目录

一、循环语句

1、for循环

for循环示例:

 2、while循环语句

 while循环示例:

3、until循环语句

 until循环示例

 4、嵌套循环

二、函数

1、函数的用法

2、函数返回值

 3、函数示例

4、函数的作用范围

 5、函数的参数

5.1传参计算两个数的和

5.2用return返回值

6、递归函数


一、循环语句

1、for循环

       使用 for 循环语句时,需要指定一个变量及可能的取值列表,针对每一个不同的取值重复执行相同的命令序列,直到变量值用完退出循环。
for 循环语句的语法结构如下:
for 变量名 in 取值列表
do
       命令序列
done
遍历
for  变量名  in  {list}
do
      命令序列
done
括号 {} 和 seq 在 for 循环的应用
for i in {1..50..2}       #1-50的奇数 
for i in {2..50..2}       #1-50的偶数 
for i in {10..1}          #1-10倒序排列 
for i in $(seq 10)        #1-10正序排列 
for i in $(seq 10 -1 1)   #1-10倒叙排列 
for i in $(seq 1 2 10)    #1-10的奇数,中间为步长 
for i in $(seq 0 2 10)    #1-10的偶数,中间为步长

       for语句的操作对象为用户指定名称的变量,并通过in关键字为该变量预先设置了一个取值列表,多个取值之间以空格进行分割。位于do…done之间的命令序列称为循环体,其中的执行语句需要引用变量以完成响应的任务

循环语句的流程

  1. 首先将列表中的第1个取值赋给变量,并执行 do···done 循环体中的命令序列
  2. 然后将列表中的第2个取值赋给变量,并执行循环体中的命令序列……
  3. 以此类推,直到列表中的所有取值用完,最后将跳至 done 语句,表示结束循环

for循环示例:

根据IP地址列表查看主机状态

①编辑ip地址列表

 ②编写脚本

 ③执行脚本

幸运会员

①编写列表

②编写脚本

③执行结果

数字炸弹

①编写脚本

②执行结果

 2、while循环语句

for 循环语句非常适用于列表对象无规律,且列表来源已固定(如某个列表文件)的场合。而对于要求控制循环次数、操作对象按数字顺序编号、按特定条件执行重复操作等情况,则更适合使用另一种循环 while 语句。
  • 使用 while循环语句时,可以根据特定的条件反复执行一个命令序列,直到该条件不再满足时为止。但是在脚本应用中,应该避免出现死循环的情况,否则后边的命令操作将无法执行。
  • 循环体内的命令序列中应包括修改测试条件的语句,以便在适当的时候使测试条件不再成立,从而结束循环。
while 循环语句的语法结构如下所示:
while 表达式                          #while 后面跟布尔值判断,判断为真,执行判断操作。
do
         命令序列
done

 

 执行流程:

  1. 首先判断 while 后的条件测试操作结果,如果条件成立,则执行 do···done 循环体中的命令序列
  2. 返回 while 后再次判断条件测试结果,如果条件仍然成立,则继续执行循环体
  3. 再次返回到 while ,判断条件测试结果如此循环
  4. 直到 while 后的条件测试结果不再成立为止,最后跳转到 done 语句,表示结束循环

 while循环示例:

列出100以内所有能被三整除的数:

①编写脚本

②执行

 

 数字炸弹

①编写脚本

②执行结果

监控本机内存和硬盘剩余空间,剩余内存小于512M、根分区剩余空间小于1024M时,发送报警信息

①编写脚本

 ②执行结果

3、until循环语句

until 循环与 while 循环类似, while 循环能实现的脚本 until 同样也可以实现,但区别是 while 循环在条件为真是继续执行循环,而 until 则是在条件为假时执行循环。
语法结构如下所示:
until 条件测试操作
do
        命令序列
done

until 语句的执行流程:
  1. 首先判断until后的条件测试操作结果,如果条件不成立,则执do…done循环体中的命令序列
  2. 返回 until 后再次判断条件测试结果,如果条件仍然不 成立,则继续执行循环体
  3. 再次返回到until后,判断条件测试结果……如此循环,直到until后的条件测试结果成立为止
  4. 最后跳转到 done 语句,表示结束循环

 until循环示例

计算1~50的和

①编写脚本

②执行结果

 4、嵌套循环

嵌套循环示例:

画一个直角三角形

①编写脚本

 ②执行结果

二、函数

1、函数的用法

       Shell 函数可用于存放一系列的指令。在 Shell 脚本执行的过程中,函数被置于内存中,每次调用函数时不需要从硬盘读取,因此运行的速度比较快。在 Shell 编程中函数并非是必 须的元素,但使用函数可以对程序进行更好的组织。将一些相对独立的代码变成函数,可以 提高程序可读性与重用性,避免编写大量重复代码。
function 函数名(){
  命令序列
return x                             #使用return或exit可以显示的结束函数 
}


或者

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

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

2、函数返回值

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

  • 函数一结束就取返回值,因为$?变量只返回执行的最后一条命令的退出状态码
  • 退出状态码必须是0~255,超出时值将为256取余 

 

 3、函数示例

 

4、函数的作用范围

  • 函数在Shell脚本中仅在当前Shell环境中有效
  • Shell脚本中变量默认全局有效
  • 将变量限定在函数内部使用local命令

local一般用于局部变量声明,多在在函数内部使用。

  • shell脚本中定义的变量是global的,其作用域从被定义的地方开始,到shell结束或被显示删除的地方为止。
  • shell函数定义的变量默认是global的,其作用域从“函数被调用时执行变量定义的地方”开始,到shell结束或被显示删除处为止。函数定义的变量可以被显示定义成local的,其作用域局限于函数内。但请注意,函数的参数是local的。
  • 如果同名,Shell函数定义的local变量会屏蔽脚本定义的global变量。

 5、函数的参数

5.1传参计算两个数的和

 5.2用return返回值

6、递归函数

Shell 也可以实现递归函数,就是可以调用自己本身的函数。在 Linux 系统上编写 Shell
脚本的时候,经常需要递归遍历系统的目录,列出目录下的文件和目录,逐层递归列出,并
对这些层级关系进行展示。
①使用递归计算阶乘

②用for计算阶乘

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值