for,while,until语句

一、for循环

读取不同的变量值,用来逐个执行同一组命令,经常使用在已经知道要进行多少次循环的场景。

1、基本格式

for   变量名称(注意是名称,不是变量$等)    [  in   名称范围  ] (可以不写)do   执行内容    若满足循环则做什么动作done    for循环结束标志

2.脚本

1.打印一列问号
#!/bin/bash
for i  in {1..9}
do
echo -e " ? "
done

2.打印正方形
#!/bin/bash
for j in {1..9}
do
for i  in {1..9}
do
echo -e " * \c"
#\c换行
done
echo
#换行
done

3.九九乘法表
#!/bin/bash
for j in {1..9}dofor i in `seq $j`doecho -e "${i}x${j}=$[i*j] \t\c"#\t tab键可以对齐doneecho
done

4.求1..10奇数和
#/bin/bash
sum=0
for i in {1..10..2}
dosum=$[sum+i]let i++
done
echo "10以内的奇数和为:$sum"

5.批量创建用户并修改密码
#!/bin/bash
for user in {1..10}doecho stu${user}|xargs -n1 useraddecho "123123"|passwd --stdin stu${user}done

6.1累加到100
#!/bin/bash
sum=0
for ((i=0;i<=100;i++))
do
sum=$[i+sum]
done
echo sum=$sum
7.1累加到100
#!/bin/bash
sum=0
for i in {1..100}
do
let sum=$i+$sum
#sum=$[i+sum]
#两种方法都可以
done
echo sum=$sum

3.for语句第二种格式 (类C语言格式)

for (( 表达式1 ;表达式2;表达式3   ))

do

执行内容    若满足循环则做什么动作

done           for循环结束标志

表达式1:定义变量并赋值

表达式2:决定是否循环

表达式3:决定循环变量如何改变,决定循环什么时候结束

举例:
vim a.sh                
脚本内容:
#!/bin/bash
for(( i=0;i<=5;i++ ))     #定义for循环i变量初始值为0,循环条件i小于等于5,每循环一次i自加1
do
echo "$i"                 #for循环每循环一次执行一次输出$i
done                      #for语句结束标志
bash a.sh                 #调用shell执行脚本
输出结果:
0
1
2
3
4
5

二.while

1.基本格式

用于不知道循环次数,需要主动结束循环或达到条件结束循环。

重复测试某个条件,只要条件成立则反复执行

格式:
while  [ 判断条件 ]
do						#do代表循环的开始判断式/命令序列
done 					#done代表循环的结束

2.脚本

1.猜价格小游戏
#!/bin/bash
p=`echo $[RANDOM%1000+1]`
t=0while true
do
let t++
read -p "请输入您猜测的价格(1-1000):" h
if [ $h -eq $p ]
then
echo "恭喜您猜中了,您一共猜测了$t次"
exit
elif [ $h -gt $p ]
then
echo "您猜测的价格过高"
else
echo "您猜测的价格过低"
fi
done

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

3.死循环语句

①while  [1  -eq  1]   判断条件写一个永久为真的条件 

    do       一直执行do内的命令

    done

②while  true        直接写判断条件为真

    do       一直执行do内的命令

    done

③while :         判断条件为冒号也表示死循环

    do       一直执行do内的命令

    done

三.until

1.基本格式

重复测试某个条件,只要条件不成立则反复执行

格式:
until  [ 判断条件 ]
do判断式/命令序列
done

2.脚本

1.1累加到100
#!/bin/bash
sum=0
i=0
until [ $i -gt 100 ]
dosum=$[sum+i]let i++
done
echo "{1..100}的和:$sum"

四.循环语句中的break、exit和continue的使用

1.break的使用

当满足条件的情况下break会跳出当前循环体

在某个循环中遇到break直接结束此次循环,但是不影响外边嵌套的循环。

break  [数字] 结束数字中的几次循环,若为2则结束自己所在循环和外边嵌套的一层循环,若为3则结束自己所在循环和外边嵌套的2层循环

举例:
vim   a.sh     #创建a.sh脚本
脚本内容:
#!/bin/bash
for j in {1..3}      #第一层for循环,j=1,2,3各执行一次do的内容
do                   #第一层for循环的执行内容for i in {1..5}  #第二层for循环,i=1,2,3,4,5各执行一次do的内容do               #第二层for循环的执行内容  if [ $i -eq 3 ]  #第二层for循环中添加的if判断语句,当$i=3是执行then内容then                break            #第二层for循环判断语句执行命令,break结束循环fi               #if语句结束echo "$i"            #第二层for循环语句执行每循环一次输出$idone                 #第二层for循环语句结束标志                
done                     #第一层for循环语句结束标志
bash a.sh                #调用bash执行a.sh脚本
执行结果:第二层执行在$i=3是结束了循环,所以只能输出1和2,第一层for循环是循环3次,所以输出了3次。
1
2
1
2
1
2

2.exit的使用

当满足条件的情况下exit会直接退出当前脚本

#!/bin/bash
for ((i=1;i<5;i++))
doecho 此${i}为外部循环for((j=1;j<4;j++))doif [ $j -eq 3 ]					<------如果j的值为3thenexit						<------结束当前脚本fiecho -e "\t此${j}为内部循环"done
done

3.continue的使用

continue中止某次循环中的命令,但不会完全中止整个命令

#!/bin/bash
for ((i=1;i<5;i++))
doecho 此${i}为外部循环for((j=1;j<4;j++))doif [ $j -eq 2 ]					<------如果j的值为2thencontinue					<------中止循环中本次的命令,但不会完全中止整个循环或脚本fiecho -e "\t此${j}为内部循环"done
done

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/206862.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

“云浮云福保”暖心回归! 保障升级价格不变,医保个账可为全家缴费!

11月22日&#xff0c;2024年“云浮云福保”项目启动会在广东省云浮市迎宾馆成功举办。记者在会上获悉&#xff0c;“云浮云福保”是在云浮市医疗保障局、云浮市金融工作局、国家金融监督管理总局云浮监管分局指导下&#xff0c;的指导下&#xff0c;由中国人民财产保险股份有限…

怎么提高拍摄视频画质和清晰度?这几个方法一定要学会

一、提高拍摄视频画质和清晰度 1、分辨率 分辨率就是我们常说的480P、720P、1080P、4K等等&#xff0c;分辨率越大&#xff0c;在某种程度上视频也就越清晰。虽然原理是这样的&#xff0c;但在不同平台上传视频也会影响最终的画质。 比如超高分辨率的视频不适合在某音。因为…

Electronica上海 Samtec 验证演示 | FireFly™Micro Flyover System™

摘要/前言 在圆满结束的2023慕尼黑上海电子展上&#xff0c;Samtec虎家团队为观众带来了前所未有的丰富体验&#xff1a;产品展示、采访、Demo演示、抽奖互动~ 尤其是Demo演示&#xff0c;虎家工程师FAE Marcus为大家带来了数个精彩的产品与系统讲解演示。其中更不乏合作伙伴…

算法刷题-动态规划-1

算法刷题-动态规划-1 不同路径不同路径||方法一&#xff1a;方法二 第N个泰波那契数递归写法滚动数组 三步问题递归操作滚动数组 使用最小画法爬楼梯递归 解码方法方法一方法二&#xff1a;&#xff08;大佬讲解&#xff09; 不同路径 //机器人不同的路径进入到指定的地点 publ…

【无标题】dp80采集机和机器人通信相关框架总结

采血机器人通信解析相关框架总结: 类似于dp80,将整个过程进行了分解如下: 类似于dp80,将整个过程进行了分解如下: 上位机界面在进行点击操作的时候,先是通信协议的解析,解析后改变采血的控制状态如下: Dp80主要框架解析࿱

现代计算与光学的跨界机遇——

时至今日&#xff0c;互补氧化金属半导体&#xff08;CMOS&#xff09;技术的飞速发展促进了集成电路的空前成功。 晶体管的创新与时俱进 正如戈登-E-摩尔&#xff08;Gordon E. Moors&#xff09;在1965年预测的那样&#xff0c;每隔18-24个月&#xff0c;计算芯片上的晶体管数…

如何保持口腔健康?羊大师全面指南!

口腔健康对于我们的整体健康至关重要。保持口腔健康可以帮助我们避免口腔疾病&#xff0c;如龋齿、牙周疾病等。口腔健康与身体其他部分的健康也有很大的关系。我们应该如何保持口腔健康呢&#xff1f;在本文中&#xff0c;小编羊大师将为您提供全面指南&#xff0c;详细介绍如…

回归算法优化过程推导

假设存在一个数据集&#xff0c;包含工资、年龄及贷款额度三个维度的数据。我们需要根据这个数据集进行建模&#xff0c;从而在给定工资和年龄的情况下&#xff0c;实现对贷款额度的预测。其中&#xff0c;工资和年龄是模型构建时的两个特征&#xff0c;额度是模型输出的目标值…

MySQL数据库常见错误及解决方案

“时记数据安全,共享优质资源”,数据库安全是指数据库数据的完整、真实、可靠和可用性。数据库也是一种软件系统,与其他软件系统一样也需要保护,需要采取一定的技术和一定的安全管理策略,保证数据库中的数据不被泄漏、不被破坏、不被修改或删除。本文列举MySQL数据库常见错…

RH850 G3KH异常处理简述

目录 1.概述 2.异常处理后现场恢复 3.异常处理地址识别 4.小结 1.概述 我们首先来看&#xff0c;G3KH的关键寄存器&#xff0c;PSW PSW--Program status word PSW寄存器里有表征程序状态的flag&#xff0c;CPU操作状态的flag。如下 UM---是否是user mode&#xff1b;0--…

3D打印新突破:可一次性打印出带骨骼、肌腱、韧带的机械手

原创 | 文 BFT机器人 近日&#xff0c;来自瑞士苏黎世联邦理工学院 (ETH) 和美国初创公司Inkbit的研究团队采用最新的激光扫描技术&#xff0c;成功地实现了机械手的3D打印&#xff0c;其内部结构由类人骨骼、韧带和肌腱组成。这项新技术使一次性3D打印具有弹性的特种塑料成为…

羊大师教你如何有效解决工作中的挑战与压力?

在现代社会&#xff0c;工作问题一直是许多人头疼的难题。无论是从工作压力到职业发展&#xff0c;工作问题不仅会影响个人的心理健康&#xff0c;还可能对整个工作团队的效率和和谐产生负面影响。因此&#xff0c;如何有效解决工作问题成为了每个职场人士都需要面对的挑战。 …