当前位置:网站首页>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执行的话,会把内部的变量加载到系统环境执行,那么将会退出终端程序。
边栏推荐
猜你喜欢
字节技术官亲码算法面试进阶神技太香了
国际原子能机构总干事警告称扎波罗热核电站安全形势已“完全失控”
Xilinx VIVADO 中 DDR3(Naive)的使用(2)读写设计
Leetcode - using sequence traversal features first completed 114. The binary tree to the list
The use of DDR3 (Naive) in Xilinx VIVADO (3) simulation test
【Qt】解决 “由于找不到Qt5Cored.dll,无法继续执行代码”(亲测有效)
Leetcode刷题——543. 二叉树的直径、617. 合并二叉树(递归解决)
Rust 从入门到精通04-变量
北京大学,新迎3位副校长!其中一人为中科院院士!
Disc burning steps
随机推荐
123
到底什么是JS原型
怎么禁止textarea拉伸
MySQL不提供数组,只能做成表吗?
【LeetCode】701.二叉搜索树中的插入操作
外键约束;外键约束
apache dolphin scheduler 文件dolphinscheduler-daemon.sh详解
『快速入门electron』之实现窗口拖拽
关于架构的思考
知网网站地址更换
云原生Devops 的实现方法
ESP8266-Arduino编程实例-MQ3酒精传感器驱动
【飞控开发高级教程7】疯壳·开源编队无人机-编队飞行
知道创宇EDR系统实力通过中国信通院端点检测与响应产品能力评测
Go编译原理系列8(变量捕获)
shell变量
mysqldump远程备份数据库
揭秘交换机市场内幕,“准工业级”猫腻你中招了吗?
职责链模式(responsibilitychain)
多行函数;group_by分组;having分组后筛选;单表查询总结