目录

1、for循环语句

1.1、for语句的结构

1.2、案例

列出奇偶数

批量添加用户 

根据IP地址检查主机状态

密码次数验证

随机抽奖将本

for循环嵌套​​

九九乘法表​​

随机生成密码(18位)

2、while语句

2.1、while语句的结构

2.2、案例

        输出1-30之间不能被3整除的数

        猜数字游戏

        猜商品的价格

       逛商场购物​

       break 和continue的区别

3、until 语句

3.1、until 循环语句的结构

3.2、案例 

        计算1-20的和值

二、shell 函数

1.1、函数返回值

1.2、函数的基本格式(案例) 

1.3、函数的作用范围

1.4、案例

           函数调用yum本地仓库

          return的用法

          local 定义函数变量全局与局部

2、参数的用法

           2.1、案例

           2.2、阶乘

​​ 三、shell 数组

1、数组的定义

1.2、数组的分类

1.3、数组的定义方式

1.4、冒泡排序

         案例

四、总结

引言:当我们在工作中遇到重复执行的工作时,我们可以写脚本来实行自动化,这样就可以方便我们不必要的麻烦,以及节省资源,除此之外,函数也会经常用到,可以更加简洁的编写脚本。

1、for循环语句

使用 for 循环语句时,需要指定一个变量及可能的取值列表,针对每一个不同的取值重复执行相同的命令序列,直到变量值用完退出循环

1.1、for语句的结构

读取不同的变量值,用来逐个执行同一组命令

for 语句的执行流程

首先将列表中的第1个取值赋给变量,并执行 do···done 循环体中的命令序列

然后将列表中的第2个取值赋给变量,并执行循环体中的命令序列……

以此类推,直到列表中的所有取值用完,最后将跳至 done 语句,表示结束循环

案例

1.2、案例

列出奇偶数

 执行脚本,列出奇偶数

批量添加用户 

用户存放在user.txt文件中,调用这个文件,根据这个文件来进行批量创建用户

编写脚本实现批量创建用户

 执行脚本并查看

 批量删除用户

根据IP地址检查主机状态

将IP地址存放在ipadds.txt文件中,调用文件中IP地址进行检测主机状态

  编写脚本实现查看文件中IP地址主机的状态

执行脚本

密码次数验证

 执行脚本

随机抽奖将本

for循环嵌套

九九乘法表

随机生成密码(18位)

2、while语句

 for循环语句非常适用于列表对象无规律,且列表来源已固定(如某个列表文件)的场合。而对于要求控制循环次数、操作对象按数字顺序编号、按特定条件执行重复操作等情况,则更适合使用另一种循环—while语句。

2.1、while语句的结构

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

执行流程

首先判断 while 后的条件测试操作结果,如果条件成立,则执行 do···done 循环体中的命令序列

返回 while 后再次判断条件测试结果,如果条件仍然成立,则继续执行循环体

再次返回到 while 后,判断条件测试结果…如此循环

直到 while 后的条件测试结果不再成立为止,最后跳转到 done 语句,表示结束循环

2.2、案例

输出1-30之间不能被3整除的数

猜数字游戏

猜商品的价格

  

 逛商场购物

 break 和continue的区别

break :跳出单个循环 

continue :终止每次循环中的命令,但是不会完成终止命令

continue 语句只结束本次循环,而不是终止整个循环。break 语句则是结束整个循环过程,不再判断执行循环的条件是否成立,并执行当前循环之后的语句。而且,continue 只能在循环语句中使用,即只能在 for、while 和 do…while 中使用,除此之外 continue 不能在任何语句中使用。

案例

break

 continue

3、until 语句

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

只要while后面的命令退出状态为0,while循环就一直执行下去,until命令与while命令相似,唯一的区别在于,只要until后面的命令退出不为0,until循环就一直执行下去,也就是说,使用until语句重复执行一段代码直到条件为真为止,与while类似

3.1、until 循环语句的结构

3.2、案例 

计算1-20的和值

二、shell 函数

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

可方便重复使用命令序列

1.1、函数返回值

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

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

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

1.2、函数的基本格式(案例) 

会优先执行最后一个命令序列

或者

函数定义完之后并不会自动执行,需要调用才行

好处在于可以写一段功能代码作为函数,有需要就直接调用定义的时候哪怕出现语法错误也没关系,不调用就不会报错

当然我们写函数最终目的还是为了调用,为了实现某个功能块。

1.3、函数的作用范围

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

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

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

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

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

1.4、案例

函数调用yum本地仓库

return的用法

  return返回值测试条件语句的正确性 

返回值为0

 

$?返回值为8

 return可以定义非零$?也表示正确

执行脚本,正确返回值也可以是非0

local 定义函数变量全局与局部

 

2、参数的用法

参数的用法

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

参数的表示方法

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

2.1、案例

调用2个数的和(位置变量)

  

调用函数删除文件

 执行脚本,已删除相应的文件

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

2.2、阶乘

 三、shell 数组

1、数组的定义

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

1.2、数组的分类

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

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

1.3、数组的定义方式

(30 20 10 60 50 40)

    0    1   2   3  4    5

第一种:直接把要加入数组的元素用小括号括起来,中间用空格分开

num=(11 22 33 44)

${#num}显示字符串长度

数组名=(value0 value1 value2)

第二种:直接把要加入数组的元素用小括号括起来,中间用空格分开

num=([0]=55 [1]=66 [2]=77 [4]=88)

数组名=([0]=value [1]=value [2]=value [4]=value...)

第三种:先把要记入数组的元素全部先赋值给一个变量,然后引用这个变量加入到数组

list=“11 12 13 14”

num=($list)

1.4、冒泡排序

基本思想
冒泡排序的基本思想是对比相邻的两个元素值,如果满足条件就交换元素值,把较小的元素移动到数组前面,把大的元素移动到数组后面(也就是交换两个元素的位置),这样较小的元素就像气泡一样从底部上升到顶部。

算法思路
冒泡算法由双层循环实现,其中外部循环用于控制排序轮数,一般为要排序的数组长度减1次,因为最后一次循环只剩下一个数组元素,不需要对比,同时数组已经完成排序了。而内部循环主要用于对比数组中每个相邻元素的大小,以确定是否交换位置,对比和交换次数随排序轮数而减少。

案例

四、总结

本篇主要讲述了for循环,又有人称之为条件循环,或者for i in ,其实就是for循环的特性,次数和给与的条件是成正比的。主要写了很多实用且简单的一些循环脚本案例,以及for语句的结构,while语句的结构、until语句的结构,以及还介绍了shell函数定义的方法,数组的使用方法。

原文链接:https://blog.csdn.net/weixin_56270746/article/details/124478661

最后修改:2023 年 10 月 26 日
如果觉得我的文章对你有用,请随意赞赏