当前位置:网站首页>shell之循环语句(for、while、until)
shell之循环语句(for、while、until)
2022-08-04 11:32:00 【芒地狠】
目录
一、循环语句
1、for循环基础
在实际工作中,经常会遇到某项任务需要多次执行的情况,而每次执行时仅仅是处理的对象不一样,其他命令相同。
for循环语句的语句结构
for 变量名 in $LIST (1、为变量准备赋值的元素 2、决定循环次数)
do
命令系列
done或者
for ((i=*;i<=*;1++)) (定义变量起始值;定义循环结束条件;控制循环次数)
do
命令序列
done
for语句的执行流程
首先变量会在取值列表中拿去第一个值,然后去执行命令系列,执行完成后,再去拿取值列表的第二个值,然后再去执行命令序列,直到取值列表中值全部取完后再去执行done,跳出循环。

基础小技巧 大括号 {} 和 seq 在for循环的应用
for i in {1..5..2} 1-50的奇数
for i in {2..6..2} 1-50的偶数
for i in {3..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的偶数,中间为步长


2、for案例
①对输入的整数进行累加

② 对输入的数进行奇数偶数判断

③对输入的数进行奇数求和、偶数求和

④根据列表批量创建用户

根据列表批量删除用户

⑤密码验证

⑥9*9乘法表


⑦猜炸弹游戏

⑧三角形


3、while 语句
1、while 语句说明
for循环语句非常适用于列表对象无规律,且列表来源已固定(如某个列表文件)的场合。而对于要求控制循环次数,操作对象按数字顺序编号、按特定条件执行重复操作等情况,则更适合适用另一种循环-----while语句
while 条件测试操作 (布尔值)
do
命令序列
done

2、while案例
vim 14.sh
#!/bin/bash
i=1 #定义变量i=1
while [ $i -le 10 ] #重复测试$1是否小于等于10,直至$i等于10
do #命令列表
if [[ $i%3 -ge 0 ]] #条件检测 $i取余3,是否等于0
then #条件成立
echo "$i" #输出 $i的值
fi #结束判断
let i++ #每次循环i+1
done #结束循环

② 猜数字


③ 商场购物
让用户选择是否进入店中购物,最多只能进三家购物,每家店中有商品和价格进行展示,用户选择进行购买,最后累加用户所购买的全部商品的价格


3、until语句
跟while相反,条件为假进入循环,条件为真退出循环
#!/bin/bash
i=0 //定义变量i=0
j=0
until [ $i -eq 11 ] //$i等于11时停止执行
do
let j=j+i // 或者 let j+=i
let i++ //每次循环i+1
done
echo "$j //打印结果 $j

二、循环控制语句
for循环一般会搭配条件判断语句和流程控制语句一起执行,那么就会出现需要跳过循环和中止循环的情况,控制循环的命令有以下3个
1、continue
①打印1-5, 3不打印

2、break *
打断,马上停止本次循环,执行循环体外的代码

3、exit
直接跳出程序,后面可跟状态返回码,如:exit 100

总结
循环语句有 for、while 和 untile三种不格式的循环语句,前两种的执行效果一样,用法上存在区别,until使用较少,与前面的语句刚好相反,注意break和continue和exit的使用方式。
break的使用方式: 跳出当前的循环,
continue的使用方式: 继续当前循环,此次循环后面将不会再输出,循环继续开始,
exit的使用方式: 退出当前终端,在执行的脚本的时候,尽量使用路径执行,如果使用source执行的话,会把内部的变量加载到系统环境执行,那么将会退出终端程序。
边栏推荐
猜你喜欢

MySql数据库入门的基本操作

数据库表列类型;DML_添加数据;DDL_修改,删除数据库表

The use of DDR3 (Naive) in Xilinx VIVADO (1) to create an IP core

微信公众号之底部菜单

【RISC-V】Trap和Exception

入门MySql表的增删查改

*iframe*

Leetcode - using sequence traversal features first completed 114. The binary tree to the list

职责链模式(responsibilitychain)

复盘:经典的HR面试问题,这些问题可以挖掘你个人的素质,看看你是否合适合我们部门
随机推荐
请 AI 画家弄了个 logo,网友热议:画得非常好,下次别画了!
北京大学,新迎3位副校长!其中一人为中科院院士!
章节小测一
面试蚂蚁(P7)竟被MySQL难倒,奋发图强后二次面试入职蚂蚁金服
深度强化学习与APS的一些感想
Leetcode - using sequence traversal features first completed 114. The binary tree to the list
Apache Doris 1.1 特性揭秘:Flink 实时写入如何兼顾高吞吐和低延时
能力更强,医疗单据识别+医疗知识库校验
隐私计算与数据流通:关系、作用及功能
职责链模式(responsibilitychain)
Leetcode brush questions - binary search tree related topics (98. Verify binary search tree, 235. The nearest common ancestor of binary search tree, 1038. From binary search tree to bigger sum tree, 5
ECCV 2022 | 清华&腾讯AI Lab提出REALY: 重新思考3D人脸重建的评估方法
MySql数据库入门的基本操作
ESP8266-Arduino编程实例-APDS-9930环境光和趋近感器驱动
mongo-导出数据到mysql
化繁为简!阿里新产亿级流量系统设计核心原理高级笔记(终极版)
Leetcode刷题——构造二叉树(105. 从前序与中序遍历序列构造二叉树、106. 从中序与后序遍历序列构造二叉树)
使用json-server快速搭建本地数据接口
ping的原理
*SEO*