一.Shell编程循环语句
循环语句
- for循环语句
- while循环语句
- untli循环语句
循环是一种控制流程
的结构,用于重复执行一段代码.而遍历是一种数据操作的过程,用于访问并处理数据结构中的每个元素。
在某些情况下,循环
和遍历
可以结合使用,以便在循环中遍历数据结构并对其进行操作。循环 (Loop) 是计算机编程中非常重要的一种结构,其主要目的是为了简化代码编写, 提高代码的重复利用率,以及提高程序的效率。以下是使用循环的一些好处:
-
(1)重复执行代码: 通过使用循环,可以在程序中重复执行一段代码,从而避免代码的重复编写,减少程序代码量,提高程序的可读性和可维护性。
-
(2)简化程序逻辑: 使用循环可以使程序逻辑更加简洁明了,提高程序的可读性和可理解性,降低代码出错的可能性.
-
(3)提高代码的重复利用率;通过将重复的代码封装在循环结构中,可以提高代码的重复利用率,减少代码冗余。
-
(4)提高程序的效率: 循环可以让程序自动化地执行重复任务,从而减少人工干预的次数,提高程序的效率和性能.
二.for语句
1.for语句的结构
读取不同的变量值,用来逐个执行同一组命令(在已经范围之内的数据进行批量性的)
第一种格式:一般格式
for 变量名称(注意是名称不是变量$等) [ in 名称范围 ] (可以不写)
do
执行内容 若满足循环则做什么动作
done for循环结束标志
for i in {1..5} //for循环5次,第一次i=1,第二次i=2以此类推直到i=5
do
echo "$i" //循环动作,每次输出$i
done //for语句结束标志
第二种格式:类C语言格式
for (( 表达式1 ;表达式2;表达式3 ))
do
执行内容 若满足循环则做什么动作
done for循环结束标志
表达式1:定义变量并赋值
表达式2:决定是否循环
表达式3:决定循环变量如何改变,决定循环什么时候结束
for ((i=0;i<=5;i++)) //定义for循环i变量初始值为0,循环条件i小于等于5,每循环一次i自加1
do
echo "$i" //for循环每循环一次执行一次输出$i
done //for语句结束标志
第三种格式:死循环格式
for ((;;))
2.for语何应用示例
示例
数字累加脚本(1-100)
需求:编写脚本实现计算从1加到100的值
思路:
①累加需要用到循环,已知循环次数时使用for循环
②也可以使用while循环达到累加条件时结束循环
常用转义符: |
echo -n 表示不换行输出
echo -e 输出转义字符,将转义后的内容输出到屏幕上 echo -ne
只有加了-e才能执行下面的转义符
字符 | 作用 |
---|---|
\b | 转义后相当于按退格键(backspace),但前提是"\b"后面存在字符;“\b"表示删除前一个字符,”\b\b"表示删除前两个字符 |
\c | 不换行输出,在"\c"后面不存在字符的情况下,作用相当于 echo -n; 但是当"\c"后面仍然存在字符时,"\c"后面的字符将不会被输出 |
\n | 换行,被输出的字符从"\n"处开始另起一行 |
\f | 换行,但是换行后的新行的开头位置连接着上一行的行尾 |
\v | 与\f相同 |
\t | 转以后表示插入tab,即横向制表符 |
\r | 光标移至行首,但不换行,相当于使用"\r"以后的字符覆盖"\r"之前同等长度的字符;但是当"\r"后面不存在任何字符时,"\r"前面的字符不会被覆盖 |
\ | 表示插入""本身 |
三.跳出循环
1.continue跳出循环
- 表示满足continue条件时跳出循环,但是不影响后续循环执行
- 它的作用是在循环内部跳过本次循环并继续下一次循环
举例
2.break跳出循环
- 在某个循环中遇到break直接结束此次循环,但是不影响外边嵌套的循环。
- break [数字] 结束数字中的几次循环,若为2则结束自己所在循环和外边嵌套的一层循环,
若为3则结束自己所在循环和外边嵌套的2层循环 - break 命令并不控制循环次数,它是用于控制循环流程的。
当 break 命令执行时,它会立即跳出当前的循环并继续执行循环后面的代码。
举例:
四.while循环
while循环满足条件执行,不满足不执行
用于不知道循环次数,需要主动结束循环或达到条件结束循环。
基本格式:
while [ 判断条件]
do
执行动作 while循环执行动作
done while循环结束标志 while true
举例:
五.until循环
- until循环通常用于当判断条件不成立时才进行循环,一旦判断条件成立,就终止循环,
- 比如等待某个进程退出、等待某个文件被创建等等
until [ 条件测试操作 ]
do
判断式/命令序列
done
i=0
sum=0
until [ $i -gt 10 ]
do
echo $i
let i++
sum=$(($sum+$i))
done
示例1:批量建立用户
示例2:批量删除用户
示例3:猜价格游戏
示例4:用户输入密码,脚本判断密码是否正确,正确密码为123456,输入正确提示正确信息,连续输错3次则报警