当前位置:网站首页>Shell:循环语句
Shell:循环语句
2022-08-03 18:12:00 【IT.cat】
目录
一、for循环
在实际工作中,经常会遇到某项任务需要多次执行的情况,而每次执行时仅仅是处理的 对象不一样,其他命令相同。例如,根据通讯录中的姓名列表创建系统账号,根据服务器清 单检查各主机的存活状态 当面对各种列表重复任务时,使用简单的 if 语句已经难以满足要求,而顺序编写全部代 码更是显得异常烦琐、困难重重
1.1、for的语句格式
第一种:for 变量名 in {list}
遍历
for 变量名 in {list}
do
command
done例子:
#!/bin/bash
for i in {1..5} #{}里面不识别变量
do
echo $i
done

for i in `seq 5`
do
echo $i
done

附1小技巧:花括号{}和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 0 2 10) 1-10的偶数,中间为步长第二种:for ((expr1;expr2;expr3))
for ((expr1;expr2;expr3))
do
command
done
expr1:定义变量并赋初值
expr2:决定是否循环
expr3:决定循环变量如何改变,决定循环什么时候退出例子
#!/bin/bash
sum=0
for ((i=1;i<=100;i+=2))
do
let sum=$i+$sum
done
echo "1-100的奇数和为:$sum"
![]()
将for和if结合使用的例子
#!/bin/bash
a=$(($RANDOM%100+1))
num1=0
for ((i=0;i<=20;i++))
do
read -p "请输入猜的数字:" num
if [ $num1 -eq $num ]
then
echo "数字重复,重输入"
else
num1=$num
if [ $num -gt $a ]
then
echo "数大了"
elif [ $num -lt $a ]
then
echo "数小了"
elif [ $num -eq $a ]
then
echo "猜对了 猜了$(($i+1)) 次"
break
else
echo "请输入正确的数"
fi
fi
done
二、while语句
while [表达式]
while循环一般用于有条件判断的循环,若判断条件为真,则进入循环,当条件为假就跳出循环
while 表达式
do
command
done例子
#!/bin/bash
i=1
while [ $i -le 5 ]
do
echo $i
let i++
done

输出1-100之间不能被3整除的数字
#!/bin/bash
i=1
while [ $i -le 100 ]
do
if [[ $i%3 -ne 0 ]]
then
echo "$i"
fi
let i++
done

while 死循环
#!/bin/bash
PRICE=$(expr $RANDOM % 1000)
a=0
echo "商品实际价格范围为 0-999,猜猜看是多少?"
while true do read -p "请输入你猜测的价格数目:" n
let a++
if [ $n -eq $PRICE ] ; then
echo "恭喜你答对了,实际价格是 $PRICE"
echo "你总共猜测了 $a 次"
exit 0
elif [ $n -gt $PRICE ] ; then
echo "你猜高了!"
else
echo "你猜低了!"
fi
done

边栏推荐
猜你喜欢

技术干货|如何将 Pulsar 数据快速且无缝接入 Apache Doris

一文带你弄懂 CDN 技术的原理

【Azure 事件中心】使用Azure AD认证方式创建Event Hub Consume Client + 自定义Event Position

Online monitoring of UPS power supply and operating environment in the computer room, the solution is here

异常与智能指针

oracle 分组合并字段,每组行显示

es6新增-async函数(异步编程的最终解决方案)

mysql之的执行计划

Cyanine5.5 alkyne|Cy5.5 alkyne|1628790-37-3|Cy5.5-ALK

87.(cesium之家)cesium热力图(贴地形)
随机推荐
87.(cesium之家)cesium热力图(贴地形)
oracle 分组合并字段,每组行显示
@resource和@autowired的区别
xxl-job 实现email发送警告的代码解析(一行一行代码解读)
cocos creater 3.x 插件安装方法
【美丽天天秒】链动2+1模式开发
Blender script 删除所有幽灵对象
快手通过国际权威信息安全和隐私保护认证,安全能力达到国际领先水平
CodeTON Round 2 (Div. 1 + Div. 2, Rated, Prizes!) A-E
2022/08/02------Ugly number
15、学习MySQL NULL 值处理
如何成为优秀的产品运营?
LyScript 内存交换与差异对比
pydev debugger: warning: trying to add breakpoint to file that does not exist: /tmp/xxx
EasyNTS上云网关断电重启后设备离线是什么原因?
CC2530_ZigBee+HUAWEI CLOUD IOT: Design your own cold chain acquisition system
技术开发人员常用的安全浏览器
【Deliberately practice the view of the back tube】deliberately practice
荧光标记多肽FITC/AMC/FAM/Rhodamine/TAMRA/Cy3/Cy5/Cy7-Peptide
OSError: [WinError 123] 文件名、目录名或卷标语法不正确