Shell编程之流程控制
目录
if判断
case语句
for循环
while循环
if判断
语法:
if [ 条件判断表达式 ]
then
程序
elif [ 条件判断表达式 ]
then
程序
else
程序
fi
注意:
- [ 条件判断表达式 ],中括号和条件判断表达式之间必须有空格。
- if,elif,else 后要有空格
- if,fi 不可省略,elif,else 可省略
示例如下:
#!/bin/bashif [ $1 == '']thenecho "参数不能为空"elif [ $1 == 1 ]thenecho "输入的数字是1"elseecho "输入的参数是 $1"fi

case语句
语法:
case $变量名 in
"值1")
程序1
;;
"值2")
程序2
;;
。。。其他分支。。。。。。
*)
默认执行程序
;;
esac
示例:
#!/bin/bashcase $1 in
1)echo "输入的值是1"
;;2)echo "输入的值是2"
;;
*)echo "输入的值是其他值"
;;
esac

注意:
- 每一匹配模式必须以右括号结束;
- 取值可以为变量或常数;
- 匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;(类似break);
- 取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。如果无一匹配模式,使用星号 * 捕获该值,再执行后面的命令;
- case、in 和 esac 都是 Shell 关键字, esac就是case的反写在这里代表结束case;
- 匹配模式: 可以是一个数字、一个字符串,或者是一个简单正则表达式;
for循环
语法1:
for(( 初始值;循环控制条件;变量变化 ))
do
程序
done
示例l:求1-100累加和
#!/bin/bashfor((i=1;i<=100;i++))dos=$[$s+$i]doneecho $s

语法2:
for 变量 in 值1 值2 值3 .。。。。。
do
程序
done
示例:输出全部参数
#!/bin/bashfor i in $*doecho "输入变量是$i"done

while循环
语法:
while [ 条件表达式 ]
do
程序
done
示例:求1-100累加和
#!/bin/bashs=0
i=1while [ $i -le 100 ]
dos=$[$s + $i]i=$[$i + 1]
done
echo $s

相关文章:
Shell编程之流程控制
目录 if判断 case语句 for循环 while循环 if判断 语法: if [ 条件判断表达式 ] then 程序 elif [ 条件判断表达式 ] then 程序 else 程序 fi 注意: [ 条件判断表达式 ],中括号和条件判断表达式之间必须有空格。if,elif…...
什么是Python爬虫分布式架构,可能遇到哪些问题,如何解决
目录 什么是Python爬虫分布式架构 1. 调度中心(Scheduler): 2. 爬虫节点(Crawler Node): 3. 数据存储(Data Storage): 4. 反爬虫处理(Anti-Scraping&…...
QT下使用ffmpeg+SDL实现音视频播放器,支持录像截图功能,提供源码分享与下载
前言: SDL是音视频播放和渲染的一个开源库,主要利用它进行视频渲染和音频播放。 SDL库下载路径:https://github.com/libsdl-org/SDL/releases/tag/release-2.26.3,我使用的是2.26.3版本,大家可以自行选择该版本或其他版…...
Microsoft Excel整合Python:数据分析的新纪元
🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...
【前端代码规范】
前端代码规范 vue3版本:【Vue&React】版本TS版本:【TS&JS】版本vite版本:【Webpack&Vite】版本Eslint版本:命名规则:【见名识意】项目命名:目录命名:JS/VUE文件CSS/SCSS文件命名:HTML文件命名:…...
postgresql-日期函数
postgresql-日期函数 日期时间函数计算时间间隔获取时间中的信息截断日期/时间创建日期/时间获取系统时间CURRENT_DATE当前事务开始时间 时区转换 日期时间函数 PostgreSQL 提供了以下日期和时间运算的算术运算符。 计算时间间隔 age(timestamp, timestamp)函数用于计算两…...
Android11去掉Setings里的投射菜单条目
Android11去掉【设置】--【已连接的设备】--【连接偏好设置】里的投射菜单条目,具体如下: commit 0c0583e6ddcdea21ec02db291d9a07d90f10aa59 Author: wzh <wzhincartech.com> Date: Wed Jul 21 16:37:13 2021 0800去掉投射菜单Change-Id: Id7f…...
fnm(Node.js 版本管理器)
fnm是什么? fnm是一款快速简单跨平台的 Node.js 版本管理器,使用 Rust 构建。 fnm怎么使用? 查看node 已安装列表 fnm list node 版本切换 fnm use 版本号 fnm use 16.0.0...
Apipost:为什么是开发者首选的API调试工具
文章目录 前言正文接口调试接口公共参数、环境全局参数的使用快速生成并导出接口文档研发协作接口压测和自动化测试结论 前言 Apipost是一款支持 RESTful API、SOAP API、GraphQL API等多种API类型,支持 HTTPS、WebSocket、gRPC多种通信协议的API调试工具。除此之外…...
Echarts图表坐标轴文字太长,省略显示,鼠标放上显示全部(vue)
注意:记得加上这个,触发事件, triggerEvent: true,重点:下面就是处理函数,在实例化图表的时候使用,传入参数是echarts的实例 // 渲染echartsfirstBarChart() {const that thislet columnar echarts.init…...
C语言控制语句——跳转关键字
循环和switch专属的跳转:break循环专属的跳转:continue无条件跳转:goto break 循环的break说明 某一条件满足时,不再执行循环体中后续重复的代码,并退出循环 需求:一共吃5碗饭, 吃到第3碗吃饱了, 结束吃饭…...
C#,《小白学程序》第五课:队列(Queue)
日常生活中常见的排队,软件怎么体现呢? 排队的基本原则是:先到先得,先到先吃,先进先出 1 文本格式 /// <summary> /// 《小白学程序》第五课:队列(Queue) /// 日常生活中常见…...
【【萌新的STM32学习25--- USART寄存器的介绍】】
萌新的STM32学习25- USART寄存器的介绍 STM32–USART寄存器介绍(F1) 控制寄存器1 (CR1) 位13: 使能USART UE 0: USART分频器和输出被禁止 1: USART模块使能 位12 : 配置8个数据位…...
SpringBootWeb案例 Part 5
4. 配置文件 员工管理的增删改查功能我们已开发完成,但在我们所开发的程序中还一些小问题,下面我们就来分析一下当前案例中存在的问题以及如何优化解决。 4.1 参数配置化 在我们之前编写的程序中进行文件上传时,需要调用AliOSSUtils工具类&…...
【ES6】Promise.race的用法
Promise.race()方法同样是将多个 Promise 实例,包装成一个新的 Promise 实例。 const p Promise.race([p1, p2, p3]);上面代码中,只要p1、p2、p3之中有一个实例率先改变状态,p的状态就跟着改变。那个率先改变的 Promise 实例的返回值&#…...
PMP - 敏捷 3355
三个核心 产品负责人 负责最大化投资回报(ROI),通过确定产品特性,把他们翻译成一个有优先级的列表 为下一个 sprint 决定在这个列表中哪些应该优先级最高,并且不断调整优先级以及调整这个列表 职责是定义需求、定义…...
Mapbox-gl 关闭所有Popup,以及关闭按钮出现黑色边框bug
1.官方示例 var popup new mapboxgl.Popup().addTo(map);popup.remove(); 很明显,需要记录popup对象,管理起来比较麻烦。 2.本人采用div的方式关闭所有的popup,在map对象上新增加方法 map.closePopupmapView.popupClear function(){$(&q…...
RE:从零开始的车载Android HMI(四) - 收音机刻度尺
最近比较忙,研究复杂的东西需要大量集中的时间,但是又抽不出来,就写点简单的东西吧。车载应用开发中有一个几乎避不开的自定义View,就是收音机的刻度条。本篇文章我们来研究如何绘制一个收音机的刻度尺。 本系列文章的目的是在讲…...
评估安全 Wi-Fi 接入:Cisco ISE、Aruba、Portnox 和 Foxpass
在当今不断变化的数字环境中,对 Wi-Fi 网络进行强大访问控制的需求从未像现在这样重要。各组织一直在寻找能够为其用户提供无缝而安全的体验的解决方案。 在本博客中,我们将深入探讨保护 Wi-Fi(和有线)网络的四种领先解决方案——…...
java 泛型作为方法的返回值的封装
问题背景 业务需要,经常需要http方式调用某服务,然后某服务返回特定类型的返回内容。 类似 String resStr xxxHttpClient.post() ,然后它返回一个字符串,你还需要反序列化成某种格式的。 返回值可以反序列化成的形式如下&#…...
插件冲突频发?三招让你的WPS回归清爽
插件冲突频发?三招让你的WPS回归清爽 【免费下载链接】WPS-Zotero An add-on for WPS Writer to integrate with Zotero. 项目地址: https://gitcode.com/gh_mirrors/wp/WPS-Zotero 当你在WPS中处理学术文档时,突然发现工具栏上出现了两个Zotero插…...
2026届毕业生推荐的十大AI辅助论文平台实测分析
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 知网于近期发布了有关人工智能生成内容也就是AIGC的投稿须知,其要求清晰且明确&…...
MCP23009 I²C GPIO扩展芯片驱动设计与实战
1. MCP23009通用I/O扩展芯片驱动库深度解析与工程实践MCP23009是Microchip公司推出的8位IC总线可编程通用输入/输出(GPIO)扩展器,专为资源受限的嵌入式系统设计。该芯片通过标准IC接口(支持标准模式100 kHz和快速模式400 kHz&…...
AVME-115A印刷电路板
AVME-115A 印刷电路板(PCB)**是一款用于工业控制或嵌入式系统的核心电子模块,负责信号传输、数据处理和系统接口连接。一、基本概述型号:AVME-115A类型:印刷电路板(PCB)用途:作为控制…...
深入解析BulletinBoard:iOS上下文卡片库的完整架构指南与核心实现
深入解析BulletinBoard:iOS上下文卡片库的完整架构指南与核心实现 【免费下载链接】BulletinBoard General-purpose contextual cards for iOS 项目地址: https://gitcode.com/gh_mirrors/bu/BulletinBoard BulletinBoard是一个功能强大的iOS库,专…...
收藏!小白程序员必看:轻松入门大模型核心概念MCP与Skill,解锁AI能力新姿势!
本文通过生活化比喻,深入浅出地解释了AI领域中的MCP和Skill两大核心概念。MCP如同AI世界的“USB接口”,是标准化的连接协议,让AI能调用外部工具;Skill则像“工作手册”,是工作规范/技能模板,告诉AI在不同场…...
蛋白质功能预测:从序列同源性到多模态深度学习
点击 “AladdinEdu,你的AI学习实践工作坊”,注册即送-H卡级别算力,沉浸式云原生集成开发环境,80G大显存多卡并行,按量弹性计费,教育用户更享超低价。 摘要:蛋白质功能预测是注释未知蛋白质、揭示…...
系统级音频均衡器如何提升macOS音质:开源eqMac完全指南
系统级音频均衡器如何提升macOS音质:开源eqMac完全指南 【免费下载链接】eqMac macOS System-wide Audio Equalizer & Volume Mixer 🎧 项目地址: https://gitcode.com/gh_mirrors/eq/eqMac eqMac是一款开源的macOS系统级音频均衡器与音量混合…...
Windows环境下Android应用的跨平台解决方案:高效部署与管理指南
Windows环境下Android应用的跨平台解决方案:高效部署与管理指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 在Windows环境中部署Android应用通常面临模…...
告别“卡脖子”:TVA的0.8秒背后柔性生产与极致效率
作为生产厂长,每天最头疼的不是做出好产品,而是如何在“多品种、小批量、快交期”的频繁切线中,保证产线不停机、不降速。现代汽车零部件企业的生产节奏越来越快,冲压产线往往要求几秒钟甚至零点几秒就出一个件。在这种极限节拍下…...
