一、循环语句
1. for 循环
在实际工作中,经常会遇到某项任务需要多次执行的情况,而每次执行时仅仅是处理的 对象不一样,其他命令相同。例如,根据通讯录中的姓名列表创建系统账号,根据服务器清 单检查各主机的存活状态
当面对各种列表重复任务时,使用简单的 if 语句已经难以满足要求,而顺序编写全部代 码更是显得异常烦琐、困难重重
#! /bin/bash
for i in {1..4}
do
echo "$i"
done
例子:算出数字1~10之和
2. while 循环
while循环一般用于有条件判断的循环,若判断条件为真,则进入循环,当条件为假就跳出循环
循环持续直到条件不再满足,需要在循环体内适时更新条件以避免无限循环
例:随机生成数字,猜大小
3. until 循环
跟while相反,条件为假进入循环,条件为真退出循环
4. 循环控制语句
循环一般会搭配条件判断语句和流程控制语句一起执行,那么就会出现需要跳过循环和中止循环的情况,控制循环的命令有以下3个
4.1 continue
continue 语句用于跳过当前循环中的剩余部分,并继续执行下一个迭代。它只会影响当前循环的剩余部分,不会退出循环
例:打印1-5的数字,3不打印
4.2 break
break 语句用于立即退出当前循环(for
、while
或until
),并跳出循环体
例:打印1-8数字,到6之后停止打印,break跳出循环
4.3 exit
exit 语句用于退出整个脚本或程序,并可返回一个状态码(通常是0表示成功,非0表示失败)
直接跳出程序所以不会执行最后的echo 完成 ,并且返回码为111
二、shell 函数
在Shell脚本中,函数是一种组织代码的方式,可以使代码更具可读性和可维护性。Shell函数可以接受参数,并且可以返回值。函数的定义和使用方式可能因不同的Shell而有所不同,但基本概念是相似的
1. 函数的定义
1.
function 函数名 {
command
} //这是一种规范写法
2.
函数名(){
command
} //最常用因为最简洁
写函数最终目的是为了调用,为了实现某个功能块
2. 函数的调用
① 直接在脚本里定义函数的代码块后写函数名即可完成调用
② 函数名必须是唯一,如果先定义了一个,再用同样的名称定义,第二个会覆盖第一个的功能
③ 调用函数之前必须先进行定义
3. return 函数返回值
return 语句可以返回一个状态码(整数值)
4. 函数传参
函数传参指的是将数据(参数)传递给函数,以便函数可以使用这些数据来执行特定的任务。函数参数使得函数更加灵活和通用,因为你可以在调用函数时传递不同的参数值,从而改变函数的行为
5. 函数的作用范围
在 Shell 脚本中函数的执行并不会开启一个新的子 Shell,而是仅在当前定义的 Shell 环境中有效。如果Shell脚本中的变量没有经过特殊设定,默认在整个脚本中都是有效的。在编写脚本时,有时需要将变量的值限定在函数内部,可以通过内置命令 local 来实现。函数内部变量的使用,可以避免函数内外同时出现同名变量对脚本结果的影响
local命令:将变量限定在函数内部使用
6. 函数递归
函数自己调用自己的本身
例:列出/opt下的所有内容并标注是文件还是目录
在使用函数递归后,可以查询到/opt/*/ 的内容