当前位置:网站首页>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执行的话,会把内部的变量加载到系统环境执行,那么将会退出终端程序。
边栏推荐
猜你喜欢
光盘刻录步骤
【LeetCode】700.二叉搜索树
数据库对象
The use of DDR3 (Naive) in Xilinx VIVADO (1) to create an IP core
【RISC-V】Trap和Exception
Leetcode刷题——构造二叉树(105. 从前序与中序遍历序列构造二叉树、106. 从中序与后序遍历序列构造二叉树)
The sword refers to the Great Wall Cannon?Official spy photos of Changan's new pickup
Xilinx VIVADO 中 DDR3(Naive)的使用(1)创建 IP 核
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
CVPR 2022 | 从人体网格预测骨架,是真正的生理学骨架!
随机推荐
复盘:经典的HR面试问题,这些问题可以挖掘你个人的素质,看看你是否合适合我们部门
剑指offer专项突击版第19天
隐私计算与数据流通:关系、作用及功能
【黄啊码】MySQL入门—2、使用数据定义语言(DDL)操作数据库
力扣解法汇总1403-非递增顺序的最小子序列
你知道吗?那些专属于代码的浪漫~
【飞控开发高级教程7】疯壳·开源编队无人机-编队飞行
The use of DDR3 (Naive) in Xilinx VIVADO (3) simulation test
深度学习------戴口罩和不戴口罩
Leetcode刷题——543. 二叉树的直径、617. 合并二叉树(递归解决)
今天15:00 | CVPR 2022 论文分享精彩继续
Mysql——》类型转换符binary
cat /proc/kallsyms 发现内核符号表值都为0
外键约束;外键约束
揭秘交换机市场内幕,“准工业级”猫腻你中招了吗?
TPC藏宝计划IDO自由协议复利模式开发功能分析
入门MySql表的增删查改
国际原子能机构总干事警告称扎波罗热核电站安全形势已“完全失控”
小程序实战(三) - head组件的封装与使用
数据库对象