shell脚本循环语句

2023年 8月 28日 117.7k 0

循环概述

含义

将某代码段重复运行多次,通常有进入循环的条件和退出循环的条件

循环类型

遍历(traversal) - 按规则访问非线性结构中的每一项。

迭代(iterate) - 按顺序访问线性结构中的每一项。

递归(recursion) - 在函数内调用自身, 将复杂情况逐步转化成基本情况。

  • 循环次数事先已知
  • 循环次数事先未知

循环原理

image.png

程序先进行语句判断,如为是则执行循环语句,然后继续进行语句判断,知道语句判断失败直接结束循环

常见的循环类型

  • for
  • while
  • until

for

for需要知道循环的次数

读取不同的变量值,用来逐个执行同一组命令

语句结构

{}和seq在for循环中的应用

for i in {1..50..2}   1-50之间的奇数
for i in {2..50..2}   1-50之间的偶数
for i in {10..1}      1-10之间的倒序排列

for i in $(seq 10)      1-10之间的正序排列
for i in $(seq 10 - 1 1)1-10之间的倒叙
for i in $(seq 1 2 10)  1-10之间的奇数
for i in $(seq 2 2 10)  1-10之间的偶数

带列表循环

#结构
for i  #自定义命名 in 循环次数
do
       循环动作
done
#结束语
#示例一:
从1~100累加求和

#!/bin/bash
sum=0
for i in {1..100}
do
sum=$[i+sum]
done
echo $sum

或者:
let sum=$i+$sum
let sum+=i

image.png

image.png

#示例二: 
求出1-100之间奇数累加和

#!/bin/bash
sum=0
for i in {1..100..2}
do
sum=$[sum+i]
done
echo $sum

image.png

image.png

不带列表循环

#结构
for 变量名 {取值列表}
do
      循环动作
done
#结束语句
#示例
#!/bin/bash
for i 
do
echo hello
done

image.png

image.png

类C循环

#结构
for (( 表达式1 ;表达式2;表达式3 ))
do
执行内容         #若满足循环则做什么动作
done            #for循环结束标志
表达式1:定义变量并赋值
表达式2:决定是否循环
表达式3:决定循环变量如何改变,决定循环什么时候结束
#示例
1-10相加求和

#!/bin/bash
for ((i=1;i/dev/null
done

image.png

image.png

批量改后缀名

#!/bin/bash
cd /data/test
for i in *
#选取所有
do
name=`echo $i|awk -F '.' '{print $1}'`
#定义文件名
mv $i ${name}.bak
#替换后缀名
done

image.png

image.png

while和until

相对于for,需要知道循环次数
while和until只知道停止条件,不知道次数,就需要使用while
直到达到条件

while

#特性
while
当命令判断为假时停止

#结构
while 判断条件
do
需要循环的事件
done

 死循环

while true
do
echo "这是一个死循环"
done

image.png

image.png

只能用Ctrl + C 停止

 求和

#!/bin/bash
i=0
sum=0
while [ $i -le 100 ]
do
let sum+=$i
let i++
done
echo $sum

image.png

image.png

猜价格游戏

#!/bin/bash
p=`echo $[RANDOM%100+1]`
t=0

while true
do
read -p "请输入你所猜测的商品价格:" num
let t++
if [ $num -eq $p ]
then
echo "恭喜恭喜,你猜中了,实际价格为$p"
echo "你一共猜了${t}次"
exit 0
elif  [ $num -gt $p ]
then
echo "你猜高了"
else
echo "你猜低了"
fi
done

image.png

image.png

until

#特性
until
当命令判断为真时停止

until 循环条件
do 
循环内容
done
#结束

求和

#!/bin/bash
i=0
sum=0
while [ $i -le 100 ]
do
let sum+=$i
let i++
done
echo $sum

image.png

image.png

退出循环

exit

当执行 exit 语句后,脚本将立即终止,并且不会再执行后续的代码。

#!/bin/bash

while true
do
  # 条件判断
  if [ 条件 ]
  then
    exit  # 退出脚本
  fi
  
  # 循环体代码
done

 break

跳出单个循环后面加数字2则代表跳出两层循环

break 具体数字 #指代跳出多少层循环
#!/bin/bash
for i in {1..10}
do
if [ $i -eq 5 ]
then break 2
fi
echo i=$i
done

continue

终止某次循环中的命令,但是不会完全终止命令

#!/bin/bash
for i in {1..10}
do
if [ $i -eq 5 ]
then continue 2
fi
echo i=$i
done

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论