当前位置:网站首页>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执行的话,会把内部的变量加载到系统环境执行,那么将会退出终端程序。
边栏推荐
猜你喜欢

【VBox】解决复制VBox虚拟机后提示硬盘UUID 已经存在的问题

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

入门MySql表的增删查改

【目标检测】yolov2特征提取网络------Darknet19结构解析及tensorflow和pytorch实现

如何用一条命令将网页转成电脑 App

秒云成功入选《2022爱分析 · 银行数字化厂商全景报告》,智能运维能力获认可

Xilinx VIVADO 中 DDR3(Naive)的使用(1)创建 IP 核

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

3-5年以上的功能测试如何进阶自动化?
![[Flight Control Development Advanced Course 7] Crazy Shell Open Source Formation UAV - Formation Flight](/img/58/19a50af5e187df0f37a1a3298c029b.png)
[Flight Control Development Advanced Course 7] Crazy Shell Open Source Formation UAV - Formation Flight
随机推荐
*SEO*
外键约束;外键约束
节流函数(每隔一段时间就会执行一次)
【黄啊码】MySQL入门—1、SQL 的执行流程
【目标检测】yolov3特征提取网络------Darknet53网络及pytorch实现
深度学习------pytorch-gpu环境搭建
到底什么是JS原型
什么是 DevOps?看这一篇就够了!
Leetcode刷题——543. 二叉树的直径、617. 合并二叉树(递归解决)
Mysql高级篇学习总结14:子查询优化、排序优化、GROUP BY优化、分页查询优化
【LeetCode】653. 两数之和 IV - 输入 BST
技术干货 | 用零信任保护代码安全
cat /proc/kallsyms found that the kernel symbol table values are all 0
今天15:00 | CVPR 2022 论文分享精彩继续
章节小测一
mysqldump远程备份数据库
数据库对象-视图;存储过程
Transferring Rich Feature Hierarchies for Robust
Leetcode brush - structure binary tree (105. Once upon a time sequence and the sequence structure binary tree traversal sequence, 106. From the sequence with the sequence structure binary tree travers
MySQL不提供数组,只能做成表吗?