什么是循环?
循环:重复执行一段代码的结构;通过循环,可以在满足一定条件下,多次执行相同的代码
循环语句包含两个方面:
循环体:代码的总结构
循环条件:当循环条件满足时,循环体的代码才会去执行,不满足时,循环结束
什么是遍历?
对数据结构中的每个元素都会进行一次访问的过程,操作,输出
循环个遍历是结合在一起使用的
循环实际上是一种控制流程的结构,用于重复执行代码;
而遍历对数据进行访问和操作的过程
循环的特点
1、重复执行代码
2、简化程序的逻辑,提高程序的可读性和可理解性,降低了代码出错的可能性
3、提高了代码的重复利用率
4、提高效率,循环可以实现自动化,让程序自动执行,节省人工成本,减少人工干预,提高效率
循环的作用:
为了批量的执行代码的方式,减少人工干预,提高执行效率
for循环
1、for循环主要用于已知循环次数的循环
2、for循环的语法结构:
for 变量名 in 变量的取值范围
do
命令序列(作用:对取值范围内的变量进行的特定的操作)
done(标准结束符)
执行后
for循环的类似C语言的格式
for((表达式1;表达式2;表达式3))
do
~~~~~~~
done
例如:
执行后
输出方式
echo
命令:
-n -------------- 表示不换行输出
-e -------------- 使用转义符
常用的转义符:
\b ---- 可以理解为使用删除键
\n ---- 换行输出
\t ---- 相当于使用tab键
\c ---- 不换行输出 ------ 特点:如果转义符过长会导致后面不会输出
循环控制语句
break ---- 一旦触发break,整个循环就会立刻跳出,即使后续还有条件,页不会再去继续执行
continue ---- 触发continue后,只会跳出本次循环,后续的循环可以继续执行;
continue ~ 后面加上数字表示作用到第几层循环
exit ---- 直接退出循环,后续不再执行
while循环
while:当满足条件时,执行循环,不满足条件时结束循环
while用于不知具体循环次数的循环,需要被动结束循环或达到循环条件的场景
while的格式
while [ 条件语判断 ]
do
命令序列
done
例如
特殊的while循环 ---- 死循环
使用格式:
while true 或 while [ 1 -eq 1 ]
设置生成随机变量
命令语句: $RANDOM ------------- 生成一个随机数
无任何定义的 $RANDOM 范围:0 ~ 52767
定义范围:
$((RANDOM%100)) ------- 范围:0 ~ 99
$((RANDOM%100+1)) -------- 范围:0 ~ 100
$((RANDOM%1000)) ------- 范围:0 ~ 999
shell函数
什么是函数?
将命令序列按照和格式写在一起(在函数中)
函数的核心作用:
重复多次使用命令序列
函数的特点:
使用函数可以避免代码重复
函数可以将大的功能分割成若干个小的功能模块,可以提高代码的可读性
函数的书写格式
function 函数名 {
命令序列(脚本)
}
另外一种格式
函数名 (){
命令序列(脚本)
}
调用定义的函数,要在函数的末尾外声明函数名
return
表示退出函数,并返回一个退出值,用$?可以显示退出值(0 / 非0 即 真 / 假)
一般return写在函数定义的最后一行;
退出值的范围:0 ~ 255;如果返回值超过了255,会输出返回值除以256后取余的值
在shell脚本中,return的返回值在不标注的情况下,默认为0或非0
总结:
return 作用在函数内部,在shell中,return一般用来判断函数的执行情况(即成功或是失败)
exit
作用于整个脚本,立刻终止,并且没有返回码
exit 0 ---- 表示程序正常的退出
exit fei0 ---- 表示程序非正常退出
函数传参
在shell中,调用函数可以传递参数;(使用位置变量来实现传参)
函数变量的作用范围
函数在shell中,仅仅在当前的shell环境中有效
在函数中定义的变量默认为全局变量,除非添加了local字段后变为内部变量
递归函数
函数调用自身的函数
函数库
函数库中包含函数的定义,脚本中包含调用函数的方法,也可以有执行代码