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 ]
    do
       uptime >> /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 ]
    do
        echo "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 10
	do
		echo $var
done
方法二:
for var in {1..10}
	do
		echo $var
done
方法三:
for var in `seq 10`
	do
	echo $var
done

## 计算 1+2+3+4+...+99+100

sum=0
for var in {1..100}
	do
		((sum=var+sum))
done
echo "1~100的和为 $sum"
# 打印1-10
for ((num=1;num<=10;num++))
	do
		echo $num
done

## 列出某个目录下的文件
#! /bin/bash
for file in `ls /baizhi`
	do
	echo $file
done
## 列出某个文件夹下所有的文件(包含子文件夹内部的文件)
[root@centos-128 abc]# cat for1.sh
#!/bin/bash
function file_list(){
for file in `ls $1`
    do
        if [ -f "$file" ]
            then
                echo "$1/$file"
        else
            file_list "$1/$file"
        fi
done
}
file_list $1
循环控制
中断循环:
办法1:
	循环条件不满足
办法2:
	break 中断循环
	continue 直接中断本次循环,进入下一次
	exit 退出脚本,退出当前shell
	return 用在函数中 结束函数的作用
break

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

[root@centos-128 abc]# cat break.sh
#!/bin/bash
for i in {1..10}
    do
        if [ $i -le 6 ]
            then
                echo "HelloWorld   $i"
        else
            break
        fi
done

#! /bin/bash
for var in {1..10} # 外层循环
	do
		echo "外层循环的执行"
		for tmp in {1..10}
			do
				if [ $tmp -le 6 ]
					then
						printf "$tmp "
				else
					break 2 ## 跳出第二层循环
				fi
		done
		printf "\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}
    do
        if [ $i -eq 6 ]
            then
                continue
        else
            echo "HelloWorld  $i"
        fi
done

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vatee万腾科技引领创新潮流:Vatee数字化探索的前沿之光

在Vatee万腾科技引领创新潮流的浪潮中&#xff0c;我们见证了一场数字化探索的前沿之光。Vatee万腾以其卓越的科技实力和创新精神&#xff0c;成为数字化时代的领军者&#xff0c;为创新潮流注入了强大动力。 Vatee万腾积极探索数字化的前沿&#xff0c;不断挑战科技的极限。他…

2023-11-18 Android Linux资源限制命令 ulimit,比如ulimit -d 是设置进程占用的最大数据段大小,默认是unlimited。

一、通过ulimit -a 命令可以查看当前的各种资源限制&#xff0c;比如ulimit -d 是 进程占用的最大数据段大小。 # ulimit -a -t: time(cpu-seconds) unlimited -f: file(blocks) unlimited -c: coredump(blocks) 0 -d: data(KiB) unlimited -s:…

VS2022 配置 OpenCV并开始第一个程序

VS2022安装 首先下载 VisualStudioSetup.exe 下载连接&#xff1a;Visual Studio 2022 IDE - 适用于软件开发人员的编程工具 点击上面的链接即可进入到下载页面。进入到下载页面&#xff0c;可看到有几个版本可选&#xff0c;如下&#xff1a; 我选择的是企业版&#xff1a;E…

Angular菜单项激活状态保持

菜单项激活状态保持 需求描述详细需求 解决方案 需求描述 如果有个需求&#xff0c;让你实现一个导航栏&#xff0c;点击不同菜单&#xff0c;图表会有不同变化&#xff0c;页面刷新后&#xff0c;该菜单状态仍旧保持&#xff0c;实现方法如下&#xff1a; 例图&#xff0c;有…

机器人走迷宫问题

题目 1.房间有XY的方格组成&#xff0c;例如下图为64的大小。每一个方格以坐标(x,y) 描述。 2.机器人固定从方格(0, 0)出发&#xff0c;只能向东或者向北前进&#xff0c;出口固定为房间的最东北角&#xff0c;如下图的 方格(5,3)。用例保证机器人可以从入口走到出口。 3.房间…

若依中脱敏

SpringBoot使用自定义注解实现返回数据脱敏操作 在实际项目中&#xff0c;对于敏感数据的保护十分重要&#xff0c;数据脱敏又称数据去隐私化或数据变形&#xff0c;是在给定的规则、策略下对敏感数据进行变换、修改的技术机制&#xff0c;能够在很大程度上解决敏感数据在非可…

【Linux】进程间是这样通信的--管道篇

TOC 目录 进程间通信的介绍 进程间通信的概念 进程间通信的目的 进程间通信的本质 进程间通信的分类 管道 什么是管道 匿名管道 pipe函数 匿名管道使用步骤 管道读写规则 管道的特点 1、管道内部自带同步与互斥机制 2、管道的生命周期随进程 3、管道提供的是流式…

【MATLAB源码-第82期】基于matlab的OFDM系统载波频移偏差(CFO)估计,对比三种不同的方法。

操作环境&#xff1a; MATLAB 2013b 1、算法描述 正交频分复用&#xff08;OFDM&#xff09;系统中的载波频率偏移&#xff08;CFO&#xff09;估计是一项关键技术&#xff0c;用于确保数据传输的准确性和效率。CFO通常由于振荡器频率不匹配和多普勒频移引起。不同的CFO估计…

分布式服务与分布式框架

分布式副武其实就是根据某个粒度&#xff0c;将服务拆分&#xff0c;而分布式框架就是将这些服务协调&#xff0c;管理起来。分布式框架&#xff0c;我认为服务调用是他的基础能力&#xff0c;该能力是所有分布式框架的基础能力&#xff0c;其次是服务注册与发现。 在这个维度…

springboot项目yml文件中使用${}配置

1、传统写法 &#xff08;1&#xff09;配置服务启动端口 # 服务端口 server:port: 9898 &#xff08;2&#xff09;使用idea启动 &#xff08;3&#xff09;使用jar包启动 2、使用${}写法 格式&#xff1a;${自定义参数名:默认值} 作用&#xff1a; 项目启动时动态配置变量…

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

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

DevSeo Studio设置中文界面

安装好DevSeo Studio后默认打开是欢迎页。 左下角Configure点击展开&#xff0c;选择plugins 弹出页面选择“installed”,然后输入chinese,默认是关闭的&#xff0c;点击enable将它启用&#xff0c;然后点击OK。 弹出页面点击“restart”重启即可。

2023年优化算法之之霸王龙优化算法(TROA),原理公式详解,附matlab代码

霸王龙优化算法&#xff08;Tyrannosaurus optimization&#xff0c;TROA&#xff09;是一种新的仿生优化算法&#xff0c;该算法模拟霸王龙的狩猎行为&#xff0c;具有搜索速度快等优势。该成果于2023年发表在知名SCI期刊e-Prime-Advances in Electrical Engineering, Electro…

基于ssm的房屋租售网站(有报告)。Javaee项目,ssm项目。

演示视频&#xff1a; 基于ssm的房屋租售网站(有报告)。Javaee项目&#xff0c;ssm项目。 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 项目介绍&#xff1a; 采用M&#xff08;mode…

JUC并发工具-CAS机制

面试的时候经常被问到锁、JUC工具包等相关内容&#xff0c;其中CAS机制是必问题目&#xff0c;以下简单总结CAS的机制、CAS产生的ABA现象、CAS产生的ABA现象解决思路 1.什么是CAS&#xff1f; CAS&#xff08;Compare and Swap&#xff09;是一种多线程同步的原子操作&#xf…

融合语言模型中的拓扑上下文和逻辑规则实现知识图谱补全11.18

融合语言模型中的拓扑上下文和逻辑规则实现知识图谱补全 摘要1 引言2 相关工作2.1 事实嵌入法2.2 拓扑嵌入方法2.3 规则融合方法2.4 基于LM的方法 3 准备3.1 知识图谱和拓扑上下文3.2 KG中的逻辑规则4.3 三元组嵌入 5 实验和结果5.1 数据集和评价指标 摘要 知识图补全&#xf…

社区无人零售:投资新热点,创业新机遇

社区无人零售是一个备受关注的创业项目&#xff0c;被视为投资的“爆点”。与其他国家相比&#xff0c;无人零售在国内市场远未达到饱和&#xff0c;因此成为了当下的新风口。今天&#xff0c;我将详细分析这个创业项目&#xff0c;以帮助感兴趣的朋友们了解更多。 首先&#x…

【论文阅读笔记】Supervised Contrastive Learning

【论文阅读笔记】Supervised Contrastive Learning 摘要 自监督批次对比方法扩展到完全监督的环境中&#xff0c;以有效利用标签信息提出两种监督对比损失的可能版本 介绍 交叉熵损失函数的不足之处&#xff0c;对噪声标签的不鲁棒性和可能导致交叉的边际&#xff0c;降低了…

【Java SE】继承

学习完了类之后&#xff0c;我们将继续学习一个Java中的重点内容“继承” 继承 1.1 为什么需要继承 举例&#xff1a; 在Cat类中和Dog类中我们发现有很多一样的地方&#xff0c;这样写太浪费空间和内存了 我们可以把它相同的地方都用一个类来表示&#xff0c;并且使用它1.2 继…

【python零基础入门学习】python进阶篇之数据库连接-PyMysql-全都是干货-一起来学习吧!!!

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…