SHELL中的循环语句

快捷查看指令 ctrl+f 进行搜索会直接定位到需要的知识点和命令讲解(如有不正确的地方欢迎各位小伙伴在评论区提意见,博主会及时修改)

循环结构

连续出现的功能性代码

shell循环有四种:

  • while 条件成立,循环就开始 直到循环条件不满足或者跳出结构为止

  • until 和while循环恰恰相反 条件不成立 循环开始 ;条件成立 循环结束

  • for

  • select

while 和 for 较为常用

while

主要用于程序的后台运行,需要持续运行的守护进程
while是一个循环语句,在某个条件为真的情况下重复执行特定的代码块。在shell中,while语句通常用于重复执行一系列命令,直到某个条件不再成立。

while [ 条件表达式 ]do代码
done
-------------------------------------
if [ 条件表达式 ]then代码
fi

在这里插入图片描述

案例演示:
#!/bin/bash
num=1
while [ "$num" -lt 10 ]douptime >> /baizhi/uptime2.log # 打印系统的负载sleep 3 #休眠三秒继续执行((num=num+1))
done
###指令 & ## 将进程放到后台运行
例如:bash load1.sh &
###fg jobId   #将指定进程拉回到前台
例如:fg 1
jobs -l ## 查看后台正在运行的进程
例如:[1]+ 2165 运行中 bash load1.sh &
## 计算 1+2+3+4+...+99+100
#! /bin/bash
sum=0
num=1
while [ $num -le 100 ]do((sum=sum+num))((num++))
done
# echo 是打印技术内容以后自动换行
echo "1~100的和为: $sum"
printf "1~100的和为:$sum \n"  # printf  默认不换行  \n---换行符
printf指令
printf 在脚本中应用的比 echo 更广泛 ----- 可移植性强
语法:printf 格式 展示的数据
printf使用文本或者空格分隔参数,也可以使用格式化字符串 还可以指定字符串的宽度,左右对其的方式
默认不换行 想换行 可以手动添加特殊字符 \n --- 换行符
##参数%s 格式替换符 输出一个字符串%c 格式替换符 输出一个字符%d 格式替换符 整型输出%f 格式替换符 输出小数
%-10s 指一个宽度为10的字符 (- 表示左对齐 没有则表示右对齐) 任何字符都会被显示在10个字符的宽度内
如果内容不够10个字符,使用空格填充 若内容超过10个字符 超过也会将内容显示出来(格式会乱)
%-4.1f 指格式化小数 其中 %-4 代表左对齐 显示在4个字符的宽度内 .1 是指小数点后保留一位
until

不满足条件,执行 ; 满足条件跳出循环结构
until是一个流程控制结构,它在执行一系列命令之前重复执行一个命令,直到该命令的退出状态为真(0)为止。

[root@centos-128 abc]# cat until.sh
#! /bin/bash
num=1
until [ $num -gt 10 ]doecho "HelloWorld"((num++))
done

在这里插入图片描述

for
写法 1:
for 变量 in 变量取值的列表do代码
done
执行流程:变量代表分别获取每个值 值取完了 结构退出
写法2:for ((expr1;expr2;expr3))for ((变量初始化定义;设置变量的取值范围;变量递增递减))
类似于C语言for(int i=0;i<=10;i++)
案例:
# 打印1-10
方法一:
#! /bin/bash
for var in 1 2 3 4 5 6 7 8 9 10doecho $var
done
方法二:
for var in {1..10}doecho $var
done
方法三:
for var in `seq 10`doecho $var
done## 计算 1+2+3+4+...+99+100sum=0
for var in {1..100}do((sum=var+sum))
done
echo "1~100的和为 $sum"
# 打印1-10
for ((num=1;num<=10;num++))doecho $num
done## 列出某个目录下的文件
#! /bin/bash
for file in `ls /baizhi`doecho $file
done
## 列出某个文件夹下所有的文件(包含子文件夹内部的文件)
[root@centos-128 abc]# cat for1.sh
#!/bin/bash
function file_list(){
for file in `ls $1`doif [ -f "$file" ]thenecho "$1/$file"elsefile_list "$1/$file"fi
done
}
file_list $1
循环控制
中断循环:
办法1:循环条件不满足
办法2:break 中断循环continue 直接中断本次循环,进入下一次exit 退出脚本,退出当前shellreturn 用在函数中 结束函数的作用
break

break 关键字 break n [n代表跳出的循环层数]

[root@centos-128 abc]# cat break.sh
#!/bin/bash
for i in {1..10}doif [ $i -le 6 ]thenecho "HelloWorld   $i"elsebreakfi
done
#! /bin/bash
for var in {1..10} # 外层循环doecho "外层循环的执行"for tmp in {1..10}doif [ $tmp -le 6 ]thenprintf "$tmp "elsebreak 2 ## 跳出第二层循环fidoneprintf "\n"
done执行结果:
[root@baizhi baizhi]# bash break2.sh
外层循环的执行
1 2 3 4 5 6
continue

contine 跳过本次循环,直接进入下一次循环

[root@centos-128 abc]# cat continue.sh
#! /bin/bash
for i in {1..10}doif [ $i -eq 6 ]thencontinueelseecho "HelloWorld  $i"fi
done

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/190160.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vite vue3安装element-plus

准备 参考 安装 官网 yarn add element-plus完整引入 如果你对打包后的文件大小不是很在乎&#xff0c;那么使用完整导入会更方便。 main.ts // main.ts import { createApp } from vue import ElementPlus from element-plus import element-plus/dist/index.css import…

OpenCV C++ 图像处理实战 ——《OCR字符识别》

OpenCV C++ 图像处理实战 ——《OCR字符识别》 一、结果演示二、tesseract库配置2.1下载编译三、OCR字符识别3.1 文本检测方式3.1.1 RIL_BLOCK3.1.2 RIL_PARA3.1.3 RIL_TEXTLINE3.1.4 RIL_WORD3.1.5 RIL_SYMBOL3.2 英文文本检测3.3 中英文本检测四、源码测试图像下载总结一、结…

LLM大模型量化原理

大型语言模型&#xff08;LLM&#xff09;可以用于文本生成、翻译、问答任务等。但是&#xff0c;LLM 也非常大&#xff08;显然&#xff0c;大型语言模型&#xff09;并且需要大量内存。 这对于手机和平板电脑等小型设备来说可能具有挑战性。 可以将参数乘以所选的精度大小以…

Python接口自动化测试之token参数关联!

前言 在做自动化接口测试时&#xff0c;有时候会遇到token的动态关联&#xff0c;例如查询余额接口&#xff0c;需要关联登录接口的token动态值&#xff0c;如何利用python脚本进行接口token关联呢?今天我们爱学习一下吧&#xff01; 一&#xff1a;获取登录接口返回的token…

【计算机基础】优雅的PPT就应该这样设计

&#x1f4e2;&#xff1a;如果你也对机器人、人工智能感兴趣&#xff0c;看来我们志同道合✨ &#x1f4e2;&#xff1a;不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸对你有帮助&#xff0c;可点赞 &#x1f44d;…

《全程软件测试 第三版》拆书笔记

第一章 对软件测试的全面认识&#xff0c;测试不能是穷尽的 软件测试的作用&#xff1a; 1.产品质量评估&#xff1b;2.持续质量反馈&#xff1b;3.客户满意度提升&#xff1b;4.缺陷的预防 正反思维&#xff1a;正向思维&#xff08;广度&#xff0c;良好覆盖面&#xff09;逆…

力扣每日一题-数位和相等数对的最大和-2023.11.18

力扣每日一题&#xff1a;数位和相等数对的最大和 开篇 这道每日一题还是挺需要思考的&#xff0c;我绕晕了好久&#xff0c;根据题解的提示才写出来。 题目链接:2342.数位和相等数对的最大和 题目描述 代码思路 1.创建一个数组存储每个数位的数的最大值&#xff0c;创建一…

gti拉取普通idea Java项目module没有build的问题

在不断完成一个项目的时候&#xff0c;会有不断新加的module&#xff0c;我们用git拉取时会发生没有识别新module的情况。 解决方法是右键项目名称&#xff0c;然后点击Open Module Settings 接下来&#xff0c;点击Module&#xff0c;加号&#xff0c;新建Module的名字就是在g…

C#WPF中的实现读取和写入文件的几种方式

说明&#xff1a;C#中实现读取和写入的类根据需要来选择。 1、File类 File类是用于操作文件的工具类&#xff0c;提供了对文件进行创建、复制、删除、移动和打开单一文件的静态方法。但需要注意的是&#xff0c;WPF中使用File的类&#xff0c;需要先引用System.IO下的命名空间。…

U盘如何自定义图标?

1、准备一张图片&#xff0c;转换为.ico格式&#xff0c;转换格式的工具推荐一个ToYcon 转换好后放到拷贝到u盘里面。 2、在u盘里面新建一个文本文档&#xff0c;在文档里面写入以下内容&#xff0c;注意&#xff0c;这里的test为图片的名称。 根据自己图片名称做一下修改。 […

【Linux】C文件系统详解(二)——什么是fd文件描述符以及理解“一切皆文件“

文章目录 fd-文件描述符如何深度理解"一切皆文件"**我们使用OS的本质:**FILEFILE是什么?谁提供的?和我们刚刚讲的内核的struct有关系吗FILE是一个结构体.该结构体内部一定要有以下字段:FILE是C语言标准库提供的.FILE和我们刚刚讲的内核的struct没有关系,最多就是上…

Redis(哈希Hash和发布订阅模式)

哈希是一个字符类型字段和值的映射表。 在Redis中&#xff0c;哈希是一种数据结构&#xff0c;用于存储键值对的集合。哈希可以理解为一个键值对的集合&#xff0c;其中每个键都对应一个值。哈希在Redis中的作用主要有以下几点&#xff1a; 1. 存储对象&#xff1a;哈希可以用…