目录

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 日
如果觉得我的文章对你有用,请随意赞赏