当前位置: 首页 > news >正文

Shell——流程控制语句(if、case、for、while等)

在 Shell 编程中,流程控制语句用于控制脚本的执行顺序和逻辑。这些语句包括 ifcaseforwhile 等,它们的使用可以使脚本实现更复杂的逻辑。以下是它们的详细说明和语法结构:

1. if 语句

if 语句用于条件判断,执行符合条件的代码块。

语法结构
if [ condition ]; then# 当 condition 为真时执行的语句
elif [ another_condition ]; then# 当 another_condition 为真时执行的语句
else# 当上述条件都不满足时执行的语句
fi

示例

#!/bin/basha=10
b=20if [ $a -gt $b ]; thenecho "a is greater than b"
elif [ $a -lt $b ]; thenecho "a is less than b"
elseecho "a is equal to b"
fi

2. case 语句

case 语句用于多分支选择,通常用于替代 if-elif-else 结构,当需要判断的条件较多时特别有用。

语法结构
case expression inpattern1)# 当 expression 匹配 pattern1 时执行的语句;;pattern2)# 当 expression 匹配 pattern2 时执行的语句;;*)# 默认情况下执行的语句;;
esac

示例

#!/bin/bashday="Monday"case $day in"Monday")echo "Start of the work week";;"Friday")echo "End of the work week";;"Saturday"|"Sunday")echo "It's the weekend!";;*)echo "Midweek day";;
esac

3. for 循环

for 循环用于遍历列表中的每一个元素,通常用于处理数组或一系列的值。

语法结构
for variable in list; do# 对 list 中的每个 variable 执行的语句
done

示例

#!/bin/bashfor i in 1 2 3 4 5; doecho "Number: $i"
done# 或者使用 C 风格的 for 循环
for ((i=1; i<=5; i++)); doecho "Number: $i"
done

4. while 循环

while 循环在条件为真时重复执行一段代码,直到条件为假时停止。

语法结构
while [ condition ]; do# 当 condition 为真时执行的语句
done

示例

#!/bin/bashcount=1while [ $count -le 5 ]; doecho "Count: $count"count=$((count + 1))
done

5. until 循环

until 循环与 while 循环相反,条件为假时重复执行代码块,直到条件为真时停止。

语法结构
until [ condition ]; do# 当 condition 为假时执行的语句
done

示例

#!/bin/bashcount=1until [ $count -gt 5 ]; doecho "Count: $count"count=$((count + 1))
done

总结

  • if 语句用于条件判断和分支执行。
  • case 语句用于多分支选择,适合匹配多个模式。
  • for 循环用于遍历列表或执行固定次数的循环。
  • whileuntil 循环用于在条件满足时反复执行某些代码。
  • breakcontinue 控制循环的执行流。

相关文章:

Shell——流程控制语句(if、case、for、while等)

在 Shell 编程中&#xff0c;流程控制语句用于控制脚本的执行顺序和逻辑。这些语句包括 if、case、for、while 等&#xff0c;它们的使用可以使脚本实现更复杂的逻辑。以下是它们的详细说明和语法结构&#xff1a; 1. if 语句 if 语句用于条件判断&#xff0c;执行符合条件的…...

【redis的大key问题】

在使用 Redis 的过程中&#xff0c;如果未能及时发现并处理 Big keys&#xff08;下文称为“大Key”&#xff09;&#xff0c;可能会导致服务性能下降、用户体验变差&#xff0c;甚至引发大面积故障。 本文将介绍大Key产生的原因、其可能引发的问题及如何快速找出大Key并将其优…...

HighPoint SSD7749M2:128TB NVMe 存储卡实现28 GB/s高速传输

HighPoint Technologies推出了一款全新的SSD7749M2 RAID卡&#xff0c;能够在标准的桌面工作站中安装多达16个M.2 SSD&#xff0c;实现高达128TB的闪存存储。该卡通过PCIe Gen4 x16接口提供高达28 GB/s的顺序读写性能。这些令人瞩目的性能规格伴随着高昂的价格标签。 #### 技术…...

ARM 裸机与 Linux 驱动对比及 Linux 内核入门

目录 ARM裸机代码和驱动的区别 Linux系统组成 内核五大功能 设备驱动分类 内核类型 驱动模块 驱动模块示例 Makefile配置 命令 编码辅助工具 内核中的打印函数 printk 函数 修改打印级别 ​编辑 打印级别含义 驱动多文件编译 示例 模块传递参数 命令行传递参数…...

0101DNS TCP fallback on UDP query timeout disabled-redission-中间件

文章目录 1.问题描述2.临时解决方案 结语 1.问题描述 Springcloud 项目&#xff0c;微服务模块使用redission&#xff0c;启动报错 DNS TCP fallback on UDP query timeout disabled. Upgrade Netty to 4.1.105 or higher.相关软件版本如下 软件版本描述springboot2.7.18spr…...

位运算

x1010 原码&#xff1a;000...1010 &#xff08;一共32位&#xff09; 反码&#xff1a;111...0101 &#xff08;~x&#xff09; 补码&#xff1a;111...0110 &#xff08;反码1&#xff09;&#xff08;-x&#xff09; 1、n 的二进制表示中第 k 位是几 #include<iost…...

MemFire Cloud是否真的可以取代后端

近年来&#xff0c;随着前端技术的迅速发展&#xff0c;前端工程师们越来越多地开始思考一个问题&#xff1a;“我还能不能不依赖后端&#xff1f;” 这种想法并非空穴来风&#xff0c;尤其是随着像MemFire Cloud这样的工具出现&#xff0c;它不仅能让开发者在没有后端的情况下…...

数据结构(邓俊辉)学习笔记】优先级队列 06——完全二叉堆:批量建堆

文章目录 1. 自上而下的上滤&#xff1a;算法2. 自上而下的上滤&#xff1a;效率3. 自下而上的下滤&#xff1a;算法4. 自下而上的下滤&#xff1a;实例5. 自下而上的下滤&#xff1a;效率 1. 自上而下的上滤&#xff1a;算法 在介绍过完全二叉堆标准的静态和动态操作接口之后…...

Java | Leetcode Java题解之第344题反转字符串

题目&#xff1a; 题解&#xff1a; class Solution {public void reverseString(char[] s) {int n s.length;for (int left 0, right n - 1; left < right; left, --right) {char tmp s[left];s[left] s[right];s[right] tmp;}} }...

定制开发AI智能名片O2O商城小程序:基于限量策略与个性化追求的营销创新

摘要:随着科技的飞速发展和消费者需求的日益多元化&#xff0c;传统商业模式正经历着前所未有的变革。在数字化转型的大潮中&#xff0c;定制开发AI智能名片O2O商城小程序作为一种新兴的商业模式&#xff0c;凭借其独特的个性化定制能力、高效的线上线下融合&#xff08;O2O&am…...

Spring MVC Controller返回json日期格式配置失效的解决办法

如题&#xff0c;Spring MVC 4.3.0版本&#xff0c;配置jackson读写json。Controller层方法返回值对象包含java.util.Date类型的属性&#xff0c;并且在applicationContext.xml中配置了jackson的日期格式&#xff1a; <mvc:annotation-driven><mvc:message-converters…...

3.Default Constructor的构造操作

目录 1. 问题引入 2. 4种implicitly声明的default constructor 1. 问题引入 “default constructors......在需要的时候被编译产生出来”。关键词是“在需要的时候”&#xff0c;被谁需要&#xff0c;做什么事情&#xff1f;看看下面的代码&#xff0c;然后梳理下思路。 cl…...

CSS的:current伪类:精准定位当前活动元素

CSS&#xff08;层叠样式表&#xff09;是控制网页样式的核心语言。随着CSS4的提出&#xff0c;一系列新的选择器被引入&#xff0c;其中:current伪类便是这些新特性之一。:current伪类允许开发者选择当前处于活动状态的元素&#xff0c;这在创建动态和交互性网页时非常有用。本…...

搭建个人网站

一 个人搭建网站需要进行的操作 详细步骤&#xff1a; 1 网站目标&#xff1a;搭建在线查看法拍房拍卖价格的预测模型&#xff0c;输出预测结果 2 实际功能&#xff1a;在线爬取 阿里法拍网站的信息 3 根据实时模型建模预测法拍价格和成交概率 要搭建一个能够在线查看法拍房拍卖…...

机器学习课程学习周报八

机器学习课程学习周报八 文章目录 机器学习课程学习周报八摘要Abstract一、机器学习部分1.1 self-attention的计算量1.2 人类理解代替自注意力计算1.2.1 Local Attention/Truncated Attention1.2.2 Stride Attention1.2.3 Global Attention1.2.4 聚类Query和Key 1.3 自动选择自…...

福泰轴承股份有限公司进销存系统pf

TOC springboot413福泰轴承股份有限公司进销存系统pf 绪论 1.1 研究背景 现在大家正处于互联网加的时代&#xff0c;这个时代它就是一个信息内容无比丰富&#xff0c;信息处理与管理变得越加高效的网络化的时代&#xff0c;这个时代让大家的生活不仅变得更加地便利化&#…...

【k8s从节点报错】error: You must be logged in to the server (Unauthorized)

k8s主节点可以获取nodes节点信息&#xff0c;但是从节点无法获取&#xff0c;且报错“error: You must be logged in to the server (Unauthorized)” 排查思路&#xff1a; 当时证书过期了&#xff0c;只处理的主节点的证书过期&#xff0c;没有处理从节点的 kubeadm alpha …...

风清扬/基于Java语言的光伏监控系统+光伏发电预测+光伏项目+光伏运维+光伏储能项目

基于Java语言的光伏监控系统光伏发电预测光伏项目光伏运维光伏储能项目 介绍 基于Java语言的光伏监控系统光伏发电系统光伏软件系统光伏监控系统源码光伏发电系统源码 基于Java语言的光伏监控系统光伏发电预测光伏项目光伏运维光伏储能项目 安装教程 参与贡献 Fork 本仓库新…...

Datawhale X 魔搭 AI夏令营第四期 魔搭-AIGC方向全过程笔记

task1: 传送门 task2&#xff1a; 传送门 task3: 传送门 目录 Task1 赛题内容 可图Kolors-LoRA风格故事挑战赛 baseline要点讲解(请配合Datawhale速通教程食用) Step1 设置算例及比赛账号的报名和授权 Step2 进行赛事报名并创建PAI实例 Step3 执行baseline Step4…...

数组---怎么样定义和引用数组

一怎么定义数组 例 int a[10]; //定义了一个一维数组&#xff0c;数组名为a&#xff0c;此数组包含10个整型元素 所以我们了解到数组的基本定义为 类型符 数组名 [常量表达式] 定义数组可以包括常量和符号常量如 int [ 35 ];但是不能利用变量定义如 int n&#xff1b; …...

OpenClaw数据安全方案:nanobot镜像的本地化存储配置

OpenClaw数据安全方案&#xff1a;nanobot镜像的本地化存储配置 1. 为什么需要关注OpenClaw的数据安全 上周我在用OpenClaw自动处理一份客户报价单时&#xff0c;突然意识到一个严重问题——这个能操控我电脑鼠标键盘的AI助手&#xff0c;正在读取我桌面上所有Excel文件。虽然…...

Qt官网抽风连不上?亲测有效的Qt6在线安装网络问题终极解决手册

Qt6在线安装网络问题终极解决手册&#xff1a;从反复失败到一次成功 看着Qt安装器上那个刺眼的"无法连接服务器"提示&#xff0c;我第27次点击了重试按钮。作为一名有十年经验的开发者&#xff0c;我从未想过会在安装环境这一步耗费整整一个下午。这不是个例——根据…...

保姆级教程:在Windows 11上用VSCode和Conda搞定Depth-Anything-3(含常见报错修复)

Windows 11深度估计实战&#xff1a;VSCodeConda环境下的Depth-Anything-3全流程指南 深度估计作为计算机视觉领域的重要技术&#xff0c;正在自动驾驶、增强现实等场景中发挥关键作用。本文将带你在Windows 11系统上&#xff0c;使用VSCode和Conda搭建Depth-Anything-3开发环境…...

OpCore Simplify:零基础黑苹果配置的终极自动化解决方案

OpCore Simplify&#xff1a;零基础黑苹果配置的终极自动化解决方案 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的OpenCore EFI配置而烦…...

iOS激活锁绕过终极指南:快速解锁iPhone/iPad的完整解决方案

iOS激活锁绕过终极指南&#xff1a;快速解锁iPhone/iPad的完整解决方案 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 当你面对一部显示"激活锁"界面的iOS设备&#xff0c;反复输入Apple I…...

避坑指南:SpringBoot整合Drools 7.20时热部署冲突的解决方案

SpringBoot与Drools 7.20热部署冲突深度排查指南 当SpringBoot的devtools热部署功能遇上Drools规则引擎&#xff0c;就像两个高效率的工人同时修改同一台机器——看似都能独立工作&#xff0c;组合时却可能引发难以察觉的运行时故障。本文将带您深入这个典型的技术冲突现场&…...

Pixel Mind Decoder 多模型协作:与Ollama本地模型联合作业

Pixel Mind Decoder 多模型协作&#xff1a;与Ollama本地模型联合作业 1. 引言&#xff1a;当AI模型开始团队合作 想象一下这样的场景&#xff1a;你手头有一份长达50页的市场调研报告&#xff0c;需要快速提炼核心观点并分析其中的情绪倾向。传统做法可能需要先人工阅读总结…...

别再手动敲代码了!用Tesseract-OCR在Linux上批量处理图片转文字(附Python脚本)

从图片到结构化数据&#xff1a;基于Tesseract-OCR的Linux批量文本提取实战 在数字化办公和自动化流程中&#xff0c;我们经常需要处理大量图片中的文字信息——可能是扫描的合同文档、会议白板照片或是PDF中的非可编辑页面。传统的手动录入不仅效率低下&#xff0c;还容易出错…...

燃油车虎视眈眈,电车涨价的图谋必将落空,油价上涨的利好将消失

近期以来多家电车企业涨价&#xff0c;美国电车涨价尤为明显&#xff0c;最高涨幅2万元&#xff0c;而国产电车涨价3000-1.4万元不等&#xff0c;凸显出电车似乎突然间对市场乐观起来&#xff0c;导致他们信心十足的在于3月份以来的油价上涨&#xff0c;但是这种涨价将迅速导致…...

从反射率到耐候性:5个关键参数教你像专业人士一样测试LED封装胶水

从反射率到耐候性&#xff1a;5个关键参数教你像专业人士一样测试LED封装胶水 在LED制造领域&#xff0c;封装胶水就像光学系统的"隐形工程师"&#xff0c;它不仅要牢固固定芯片和荧光粉&#xff0c;更承担着光线管理的关键任务。一款优质的高反射率封装胶水&#xf…...