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() ,然后它返回一个字符串,你还需要反序列化成某种格式的。 返回值可以反序列化成的形式如下&#…...
OBS背景移除插件:零绿幕实现专业直播效果的完整指南
OBS背景移除插件:零绿幕实现专业直播效果的完整指南 【免费下载链接】obs-backgroundremoval An OBS plugin for removing background in portrait images (video), making it easy to replace the background when recording or streaming. 项目地址: https://gi…...
MapStruct实战:手把手教你处理SpringBoot API中的字段名不一致问题
MapStruct实战:SpringBoot API字段名不一致的优雅解决方案 在SpringBoot开发中,前后端数据交互时经常遇到字段命名规范不一致的问题。数据库使用user_name,前端却要求userName;或者需要隐藏敏感字段如password,转换成*…...
告别仿真卡顿!Synopsys AXI VIP Memory模型实战:从地址配置到后门读写(附避坑指南)
告别仿真卡顿!Synopsys AXI VIP Memory模型实战:从地址配置到后门读写(附避坑指南) 在复杂SoC验证中,仿真速度直接决定了项目周期。当AXI总线上的数据吞吐量达到GB/s级别时,传统的前门读写操作会让仿真器陷…...
终极微信聊天记录备份指南:免费开源工具WeChatExporter完整教程
终极微信聊天记录备份指南:免费开源工具WeChatExporter完整教程 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 你是否担心珍贵的微信聊天记录会因手机损坏或…...
别再死记硬背了!图解MATLAB形态学:用‘膨胀腐蚀’和‘开闭运算’修复破损老照片
用MATLAB形态学魔法修复老照片:从膨胀腐蚀到开闭运算的实战指南 翻开泛黄的相册,那些承载着记忆的老照片往往布满时间的痕迹——划痕、斑点、缺失的角落。作为图像处理领域的瑞士军刀,MATLAB提供了一套强大的形态学工具,能像数字修…...
MounRiver Studio编译优化实战:如何为你的RISC-V项目选择-O0到-O3?
MounRiver Studio编译优化实战:RISC-V项目-O0到-O3的深度选择指南 当你在MounRiver Studio中点击那个小小的"Optimization"下拉框时,是否曾对着-O0、-O1、-O2、-Os、-O3这些选项犹豫不决?作为一位经历过数十个RISC-V项目的老手&am…...
保姆级教程:红米K70澎湃OS解锁BL后,如何用Delta面具(德尔塔面具)一键Root
红米K70澎湃OS深度Root指南:Delta面具全流程实战解析 在安卓玩机圈里,Root始终是释放设备潜力的终极钥匙。对于手持红米K70并已解锁Bootloader的进阶用户而言,Delta面具(Magisk Delta)无疑是当前最安全、最稳定的Root解…...
CANN/asc-devkit原子减法操作
asc_atomic_sub 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode…...
RT-Thread下lwIP协议栈内存优化实战:从300KB降至120KB
1. 项目概述与核心价值最近在做一个基于RT-Thread的物联网网关项目,硬件资源是STM32F407,带1MB的RAM。项目需要同时处理4路TCP长连接和若干UDP广播包,原本以为内存绰绰有余,结果一上电跑起来,系统内存占用直接飙到了90…...
Fluent瞬态计算踩坑记录:时间统计采样设置里的3个关键细节与避坑指南
Fluent瞬态计算时间统计功能深度解析:从原理到实践的3个高阶技巧 在计算流体动力学(CFD)的瞬态仿真中,时间统计功能就像一位隐形的数据分析师,默默记录着流场参数的每一次脉动与演变。许多工程师在使用Fluent进行瞬态计…...
