循环是什么
循环是重复的一段代码,循环中有三种专业的术语:遍历、迭代、递归
- 遍历(traversal) - 按规则访问非线性结构中的每一项
- 迭代(iterate) - 按顺序访问线性结构中的每一项
- 递归(recursion) - 在函数内调用自身, 将复杂情况逐步转化成基本情况
循环的进入和退出都是有相应的条件的
循环的次数分为两种状态
- 一.已知循环次数
- 二.未知循环次数
常用的循环命令: for、while、until
for
用法:
- 读取不同的变量值,用来逐个执行同一组命令
- 使用场景:一般用于循环次数事先已知的场景
- 执行机制:遍历
示例:
for 变量名 in 取值列表
do
所用的命令
done
执行机制:
for命令执行示例:
for i in {1..10}
do
echo $i
done
for命令循环执行示例
求从1加到10的和
vim xunhuan.sh #.sh是让人一看就知道这是shell脚本
#!/bin/bash
sum=0
for i in {1..10}
do
sum=$[sum+i]
done
echo "求得和是$sum"
bash xunhuan.sh
for有三个默认分隔符
环境变量$IFS,是指内部字段分隔符, 默认为三个:空格、制表符 \t、换行符\n
可以用
set | grep IFS查看
while
用法:
- 重复测试某个条件,只要条件成立则反复执行。
- 使用场景:相对于for需要知道循环次数,当我们只知道停止条件,不知道次数时,就需要使用while
格式
while 条件测试操作
do
命令序列
done
while命令执行示例
a=0
while [ $a -le 10 ]
do
echo $a
let a++
done
如果不加let a++,a就会一直打印0,因为a无法满足a=10,不会结束这个命令
for命令循环执行示例
chmod +x while01.sh
./while01.sh #可以给文件权限然后执行绝对路径命令
#!/bin/bash
price=$[RANDOM%100+1]
a=0
while true
do
read -p "猜数字(1-100):" num
let a++
if [ $num -eq $price ]
then
echo "恭喜你对了"
echo "你一共猜了$a次"
exit
elif [ $num -lt $price ]
then
echo "低了"
else [ $num -gt $price ]
echo "高了"
fi
done
until
用法:
- 重复测试某个条件,只要条件不成立则反复执行。
格式:
until 条件测试操作
do
命令序列
done
until命令执行示例
a=1
until [ $a -gt 10 ]
do
echo $a
let a++
done
until命令循环执行示例
vim until01.sh
#!/bin/bash
sum=0
i=1
until [ $i -gt 10 ]
do
let sum=$[sum+i]
let i++
done
echo "1到10的和为:$sum"
bash until01.sh