当前位置:网站首页>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执行的话,会把内部的变量加载到系统环境执行,那么将会退出终端程序。
边栏推荐
猜你喜欢
随机推荐
企业应当实施的5个云安全管理策略
北京大学,新迎3位副校长!其中一人为中科院院士!
防抖函数封装
Mysql高级篇学习总结14:子查询优化、排序优化、GROUP BY优化、分页查询优化
【LeetCode】98.验证二叉搜索树
【LeetCode】653. 两数之和 IV - 输入 BST
The use of DDR3 (Naive) in Xilinx VIVADO (1) to create an IP core
【LeetCode】700.二叉搜索树
【目标检测】YOLOv4特征提取网络——CSPDarkNet53结构解析及PyTorch实现
Redis查询缓存
【地平线旭日X3派试用体验】从开机到点灯(第一节)
力扣解法汇总1403-非递增顺序的最小子序列
字节技术官亲码算法面试进阶神技太香了
终于有人把分布式机器学习讲明白了
蒲丰投针学习笔记
Doing Homework HDU - 1074
Xilinx VIVADO 中 DDR3(Naive)的使用(3)仿真测试
化繁为简!阿里新产亿级流量系统设计核心原理高级笔记(终极版)
200ppi转以太网通过4Gwifi在医药设备移动平台(平板电脑、手机)
mongo-导出数据到mysql