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

Shell脚本详解:从理论到实践(三)

Shell脚本详解:循环

1.for循环

用途:遍历一个列表(如文件列表、数字序列、数组元素等)并执行重复操作。

示例1:遍历文件列表
#!/bin/bash # 遍历当前目录下所有.txt文件 for file in *.txt; do echo "处理文件: $file" # 这里可以添加具体操作,比如统计行数 wc -l "$file" done

讲解

  • for file in *.txt:将当前目录下所有.txt文件赋值给变量file
  • do ... done:循环体,对每个文件执行操作。
  • echowc -l:打印文件名并统计行数。

示例2:遍历数字序列
#!/bin/bash # 生成数字序列:1到5 for i in {1..5}; do echo "当前数字: $i" done

讲解

  • {1..5}:生成一个从1到5的整数序列。
  • 每次循环将当前数字赋值给i并打印。

示例3:C语言风格遍历
#!/bin/bash # 类C语法:初始化i=1;循环条件i<=5;步长i++ for ((i=1; i<=5; i++)); do echo "计数: $i" done

讲解

  • ((i=1; i<=5; i++)):初始化、条件判断和步长更新。
  • 适用于需要精确控制循环次数的场景。

2.while循环

用途:当条件为真时重复执行代码块。

示例:读取文件内容
#!/bin/bash # 逐行读取文件 while IFS= read -r line; do echo "行内容: $line" done < "input.txt"

讲解

  • while read -r line:每次读取一行到变量line
  • IFS=:防止行首尾空格被截断。
  • < "input.txt":输入重定向,从文件读取数据。

示例:条件计数
#!/bin/bash count=0 while [ $count -lt 5 ]; do echo "计数: $count" ((count++)) done

讲解

  • [ $count -lt 5 ]:条件判断(-lt表示小于)。
  • ((count++)):自增操作,避免死循环。

3.until循环

用途:当条件为假时重复执行,与while相反。

示例:等待服务启动
#!/bin/bash status="down" until [ "$status" == "up" ]; do echo "等待服务启动..." sleep 1 status=$(curl -s http://localhost/status) done echo "服务已就绪!"

讲解

  • until [ "$status" == "up" ]:条件为假时持续循环。
  • curl检查服务状态,直到返回up才退出循环。

4. 循环控制语句

  • break:立即终止当前循环。
    for i in {1..10}; do if [ $i -eq 5 ]; then break # 当i=5时跳出循环 fi echo $i done
  • continue:跳过当前迭代,进入下一次。
    for i in {1..5}; do if [ $i -eq 3 ]; then continue # 跳过i=3的迭代 fi echo $i done

总结

循环类型适用场景特点
for遍历列表、数字序列明确循环次数
while条件为真时执行可能无限循环(需谨慎)
until条件为假时执行while互补

通过灵活组合这些循环结构,可以高效处理自动化任务,如日志分析、批量文件操作等。

http://www.jsqmd.com/news/640228/

相关文章:

  • 【多智能体】UGV和UAV在内的异构混合阶多智能体系统的一致性附Matlab代码
  • 大型工件精密加工高效达标,龙门铣床哪个品牌好?实力厂家口碑推荐 - 品牌推荐大师
  • OpenHTMLtoPDF:企业级文档自动化生成的革命性解决方案
  • Qwen3-ASR-0.6B低延迟优化:实时语音转文字技术解析
  • 园区能源监测数据采集网关的功能作用
  • 从焊接台到上电:一个硬件工程师的PCB调试实战指南
  • 原子化《思考快与慢》的原子化的庖丁解牛
  • 终极Obsidian PDF导出解决方案:Better Export PDF完全指南
  • 为什么要选全文降AI?推荐这3个工具一次搞定整篇论文 - 我要发一区
  • 终极跨平台模组解决方案:WorkshopDL让非Steam游戏也能畅享创意工坊
  • 万象视界灵坛CLIP应用实战:快速搭建图片标签分析与语义匹配系统
  • slackware 3.1 源代码
  • 如何在Word中一键配置APA第7版参考文献格式:终极完整指南
  • Graphormer模型前端设计思维:打造用户体验卓越的化学AI工具
  • 从像素到坐标:用Java+GeoTools深度解析GeoTIFF的波段与元数据
  • 3分钟掌握Balena Etcher:安全烧录系统镜像的终极指南
  • 去掉像素中介!上海交大让AI边看边想边画,用同一个“大脑”跨模态推理
  • 康安倍泰李华:一位深耕女性健康事业的创业者 - 品牌排行榜
  • include ‘config.php‘;+计算机系统的生命周期的庖丁解牛
  • 2026靠谱的钢丝网骨架聚乙烯管加工厂推荐,性价比高的厂家选择指南 - mypinpai
  • Vue3——Vue实例与数据绑定
  • Rudist v0.5.1 发布:AI 驱动的 Redis 客户端,更快、更直观
  • 2026年乌鲁木齐软装定制与沙发翻新服务商完全指南|忆麻家纺官方联系方式+全行业横评避坑指南 - 精选优质企业推荐榜
  • 【Python】Playwright:高效页面交互实战指南
  • 3分钟解锁WeMod专业版:Wand-Enhancer让你的游戏体验全面升级
  • **发散创新:过度依赖单一编程语言导致的架构脆弱性与重构实践**在现代软件开发中,**选择一种主流编程语言并深度投入是常见的做
  • AI工程师的自我修炼:从算法到商业价值
  • SqlSugar 接入 PostgreSQL pgvector 完整方案(增删改查 + 强类型相似度查询)
  • 实力强的预制直埋保温管厂家推荐,看看企业排行谁更值得选 - myqiye
  • 2026年乌鲁木齐软装定制与沙发翻新怎么选?忆麻家纺官方联系方式与本地5大服务商深度横评 - 精选优质企业推荐榜