Linux shell编程学习笔记19:until循环语句
Linux shell编程中的until语句,在功能上与其它编程语言一致,但在结构与其它编程语言又不太一样。在大多数编程语言中,until语句的循环条件表达式一般位于循环体语句的后面,但是在Linux shell编程中,until语句的循环条件表达式与for语句和while一样,位于循环体语句的前面。
一、数字条件循环类
我们继续以for循环语句和while循环语句中的例子,计算 从1到10与2的乘积 并输出。
(一)在zsh命令行成功执行
# csdn @ edu in ~ [20:26:26]
$ i=1; until [ ! $i -le 10 ]; do echo "$i * 2 = $(expr $i \* 2)"; i=$(expr $i + 1); done
1 * 2 = 2
2 * 2 = 4
3 * 2 = 6
4 * 2 = 8
5 * 2 = 10
6 * 2 = 12
7 * 2 = 14
8 * 2 = 16
9 * 2 = 18
10 * 2 = 20# csdn @ edu in ~ [20:27:06]
$

(二)在bash命令行成功执行
# csdn @ edu in ~ [20:27:06]
$ exec bash
[csdn ~]$ i=1; until [ ! $i -le 10 ]; do echo "$i * 2 = $(expr $i \* 2)"; i=$(expr $i + 1); done
1 * 2 = 2
2 * 2 = 4
3 * 2 = 6
4 * 2 = 8
5 * 2 = 10
6 * 2 = 12
7 * 2 = 14
8 * 2 = 16
9 * 2 = 18
10 * 2 = 20
[csdn ~]$

二、字符条件循环类
我们使用的实例跟前面探讨的while循环语句中的一样,先定义字符串s=abcd0,初始化循环变量i,然后从i开始截取字符串s值并输出,直到截取的字符串为0时结束循环。
(一)在bash中执行成功
[csdn ~]$ s=abcd0; i=0; until [[ ! ${s:i} != '0' ]] ; do echo ${s:i}; let i++; done
abcd0
bcd0
cd0
d0
[csdn ~]$

(二)在zsh命令行执行不成功
# csdn @ edu in ~ [22:36:44]
$ s=abcd0; i=1; until [[ ! ${s:i} != '0' ]] ; do echo ${s:i}; let i++; done
zsh: unrecognized modifier `i'

与while循环语句一样,这个实例也在zsh命令行同样执行不成功。
三、无限循环
与for语句、while语句一样, until语句也可以实现无限循环。
下面的实例跟前面探讨的while循环语句中的一样,我们用无限循环每隔30秒显示提示信息 press Ctrl+C to exit,在用户按下Ctrl+C后结束循环。
(一)用false作为循环条件表达式
1.在zsh命令行执行成功
# csdn @ edu in ~ [22:48:08]
$ until false; do echo 'press Ctrl+C to exit'; sleep 30s; done
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
^C%# csdn @ edu in ~ [22:49:49] C:130
$

2.在bash命令行执行成功
[csdn ~]$ until false; do echo 'press Ctrl+C to exit'; sleep 30s; done
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
^C
[csdn ~]$

(二)用 ! : 作为循环条件表达式
1.在zsh命令行执行成功
# csdn @ edu in ~ [22:49:49] C:130
$ until ! : ; do echo 'press Ctrl+C to exit'; sleep 30s; done
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
^C%# csdn @ edu in ~ [22:55:55] C:130
$

2.在bash命令行执行成功
[csdn ~]$ until ! : ; do echo 'press Ctrl+C to exit'; sleep 30s; done
press Ctrl+C to exit
^C
[csdn ~]$

四、总结
至此我们学习了Linux shell编程中的for、while、until三个循环语句,相对来说,for语句格式更灵活,比如支持 in 表达试,所以应用也相对更广泛。
相关文章:
Linux shell编程学习笔记19:until循环语句
Linux shell编程中的until语句,在功能上与其它编程语言一致,但在结构与其它编程语言又不太一样。在大多数编程语言中,until语句的循环条件表达式一般位于循环体语句的后面,但是在Linux shell编程中,until语句的循环条件…...
(CV)论文列表
CNN卷积神经网络之SKNet及代码 https://blog.csdn.net/qq_41917697/article/details/122791002 【CVPR2022 oral】MixFormer: Mixing Features across Windows and Dimensions 【精选】【CVPR2022 oral】MixFormer: Mixing Features across Windows and Dimensions-CSDN博客...
恶意软件防范和拦截: 提供防范恶意软件攻击的策略
恶意软件,或者俗称的“病毒”,一直是IT领域的一个严重威胁。这些恶意软件可以窃取敏感信息、损害系统稳定性,甚至对企业和个人造成重大经济损失。在这篇博客文章中,我们将讨论如何防范和拦截恶意软件攻击,包括使用反病…...
单例模式浅析
程序中仅存在一个对象实例,避免重复构建浪费资源。 1.饿汉式 主要分为3步:1.构造方法私有化 2.内部创建静态实例化对象 3.提供公有静态方法,返回对象实例 public class SingleTon { // 构造方法私有化private SingleTon(){} // 内部…...
Springboot引入mybatis-plus及操作mysql的json字段
springboot引入mybatis-plus,创建springboot项目省略 pom文件 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.3.4</version></dependency> <!…...
springboot读取application.properties中文乱码问题
目录 1 前言: 2 本地环境中的解决方案(以idea为例) 3 全部解决方案 1 前言: 初用properties,读取java properties文件的时候如果value是中文,会出现乱码的问题。我们首先需要明了乱码问题的根源。在 Java 中&#x…...
SAML- 安全断言标记语言
一、概念 安全断言标记语言(SAML)是一种开放标准,用于在各方之间(特别是身份提供商和服务提供商之间)交换身份验证和授权数据。SAML 是一种基于XML的安全断言标记语言(服务提供商用来做出访问控制决策的语句…...
【佳学基因检测】Node.js中http模块的使用
【佳学基因检测】Node.js中http模块的使用 先看代码: http.createServer(function (req, res) {res.writeHead(200, {Content-Type: text/html});res.end(测基因,阻遗传,就在佳学基因干(http://www.jiaxujiyin.com)!); }).liste…...
前端基础之JavaScript
JavaScript是一种能够在网页上添加交互效果的脚本语言,也被称为客户端语言。它可以在网页中操作HTML元素、改变CSS样式,以及处理用户的交互事件等。 以下是JavaScript的常见基础知识点: 变量和数据类型:JavaScript中的变量可以存…...
[GDOUCTF 2023]<ez_ze> SSTI 过滤数字 大括号{等
SSTI模板注入-中括号、args、下划线、单双引号、os、request、花括号、数字被过滤绕过(ctfshow web入门370)-CSDN博客 ssti板块注入 正好不会 {%%}的内容 学习一下 经过测试 发现过滤了 {{}} 那么我们就开始吧 我们可以通过这个语句来查询是否存在ss…...
C/C++奇数求和 2021年3月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析
目录 C/C奇数求和 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 C/C奇数求和 2021年3月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 计算非负整数 m 到 n(包括m 和 n ÿ…...
Android APT的使用
Apt 介绍 APT(Annotation Processing Tool)是一种处理注释的工具,它对源代码文件进行检测找出其中的 Annotation,根据注解自动生成代码。 Annotation 处理器在处理 Annotation 时可以根据源文件中的 Annotation 生成额外的源文件和其它的文件(文件具体内容由 Annot…...
【刷题宝典NO.0】
目录 素数的判定 打印素数 打印水仙花数 百钱买百坤 输出闰年 逆序打印一个整数的每一位 输出乘法口诀表 数字9出现的次数 二进制1的个数 输出一个整数的偶数位和奇数位的二进制序列 求两个整数的最大公约数 求两个整数的最小公倍数 小乐乐与欧几里得 小…...
MySQL数据库——存储过程-介绍以及基本语法(特点、创建、调用、查看、删除、示例)
目录 介绍 特点 基本语法 创建 调用 查看 删除 示例 介绍 存储过程是事先经过编译并存储在数据库中的一段 SQL 语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理…...
基础课15——语音标注
语音数据标注是对语音数据进行处理和分析的过程,目的是让人工智能系统能够理解和识别语音中的信息。这个过程包括了对语音信号的预处理、特征提取、标注等步骤。 在语音数据标注中,标注员需要对语音数据进行分类、切分、转写等操作,让人工智…...
Linux启动故障排错
Linux启动过程 开机流程、模块管理-CSDN博客 Grub三个阶段 1st stage:执行Grub主程序。Grub安装在MBR。由于MBR太小,所以与配置文件分开放1.5 stage:识别不同的文件系统2nd stage:加载Grub配置文件 /boot/grub2/grub.cfg。配置…...
全新二开游戏支付通道/话费/电网、紫水晶带云端源码
源码修复可用,YY业务都可用 本店所售程序只供测试研究,不得使用于非法用途,不得违反国家法律,不得用于进行违法行为,否则后果自负!购买以后用作他用附带的一切法律责任后果都由购买者承担于本店无任何关…...
Hadoop相关知识点
文章目录 一、主要命令二、配置虚拟机2.1 设置静态ip2.2 修改主机名及映射2.3 修改映射2.4 单机模式2.5 伪分布式2.6 完全分布式 三、初识Hadoop四、三种模式的区别4.1、单机模式与伪分布式模式的区别4.2、特点4.3、配置文件的差异4.3.1、单机模式4.3.2、伪分布式模式4.3.3、完…...
Javassist讲解1(介绍,读写字节码)
Javassist讲解1(介绍,读写字节码) 介绍一、读写字节码1.如何创建新的类2.类冻结 介绍 javassist 使Java字节码操作变得简单,它是一个用于在Java中编辑字节码的类库; 它使Java程序能够在运行时定义一个新类,…...
【Linux】常见指令以及具体其使用场景
君兮_的个人主页 即使走的再远,也勿忘启程时的初心 C/C 游戏开发 Hello,米娜桑们,这里是君兮_,随着博主的学习,博主掌握的技能也越来越多,今天又根据最近的学习开设一个新的专栏——Linux,相信Linux操作系…...
工业无网智能诊断:可执行二维码与QRind语言深度解析
1. 项目概述:当二维码“活”起来,工业现场的无网智能诊断在工业现场,尤其是那些网络信号不稳定甚至完全隔绝的区域——比如大型石化厂的深处、地下矿井的作业面,或是某些对网络安全有严格管控的精密制造车间,我们常常面…...
答案不在知识库内,改改 RAG 提示词这样就够了吗?
今天抛出一个问题,如果你的 RAG 系统检索到了垃圾文档,它会不会编一个听起来像模像样的答案? 提示词中写了“不知道就别答”,能管住吗? 介绍下 CRAG 这种方案。 传统 RAG 有一个沉默的故障模式 先说个案例。 某企业…...
OpenMemories-Tweak终极指南:5分钟解锁索尼相机所有隐藏功能
OpenMemories-Tweak终极指南:5分钟解锁索尼相机所有隐藏功能 【免费下载链接】OpenMemories-Tweak Unlock your Sony cameras settings 项目地址: https://gitcode.com/gh_mirrors/op/OpenMemories-Tweak 想要彻底解锁索尼相机的全部潜力吗?OpenM…...
Oracle误操作先别慌:Flashback、UNDO、回收站、Redo 与归档日志一次讲清楚 2026-05-24
1、背景说明本文整理 Oracle 生产环境中误操作恢复相关的核心知识点,包括:Flashback Database Flashback Query UNDO Recycle Bin FRA 快速恢复区 Redo Archived Redo Log 归档日志适用于 Oracle 单实例、RAC,以及 CDB/PDB 多租户环境。在 CD…...
k6性能测试实战:现代工程化压测方法论
1. 为什么是k6,而不是JMeter或Gatling?我第一次在生产环境压测中被JMeter拖垮,是在一个电商大促前夜。当时用20台云服务器搭起分布式集群,配置文件写了300多行,结果一跑起来内存飙到95%,GC频繁,…...
题解:AcWing 1054 股票买卖
本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大…...
色度下采样:揭秘那个让 4K 视频“飞“起来的隐形魔法
一、一个让我"开窍"的报纸印刷故事 我大学时学过一段时间平面设计,去一家报社实习,亲眼见识过报纸印刷的全过程。报社的印刷流程让我印象特别深刻——他们印彩色版面时,黑色文字部分的网点密度极高(每英寸 150 线以上&a…...
runc符号链接挂载漏洞导致容器逃逸的原理与实战防护
1. 这个漏洞不是“理论风险”,而是真实可触发的容器逃逸链你有没有遇到过这样的情况:在调试一个容器化服务时,临时用ln -s /host/path /container/mount建了个符号链接,本意只是方便日志查看或配置共享,结果几分钟后发…...
双稳健机器学习在时间序列因果推断中的应用:以脉冲响应函数为例
1. 项目概述:当因果推断遇上时间序列在宏观经济和金融领域,我们常常需要回答这样的问题:当中央银行突然宣布加息0.25个百分点,失业率在未来两年内会如何变化?或者,一项新的财政刺激政策出台后,G…...
别再到处找教程了!保姆级VMware Workstation 17 Pro安装CentOS 7图文指南(含阿里云镜像下载)
2024最新版VMware Workstation Pro 17与CentOS 7实战安装全攻略对于开发者而言,拥有一个稳定、高效的Linux开发环境至关重要。CentOS 7作为企业级Linux发行版,以其卓越的稳定性和广泛的软件支持成为众多开发者的首选。而VMware Workstation Pro 17则提供…...
