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

《Linux Shell 结构化编程全梳理:分支判断与循环核心语法笔记+课后练习》

笔记部分:
一、分支判断命令
1. if-then 语句
bash 的 if 语句以命令退出状态码为判断依据:退出码为0(执行成功)则执行 then 代码块,非0则跳过,以 fi 结束。
基础结构:if 命令 + then 执行语句 + fi
扩展形式:
if-then-else:双分支,执行失败时运行 else 代码块
嵌套 if:在 else 分支中继续编写判断逻辑
elif:多分支写法,替代多层嵌套 if,简化多条件判断
2. test 条件测试
test 为 if 提供条件测试能力,条件成立返回退出码0,不成立返回非0。等价简写为 [ 测试条件 ],方括号内侧必须保留空格,否则会触发语法错误。
支持三类测试:
数值比较:仅支持整数,包含等于(eq)、大于(gt)、大于等于(ge)、小于(lt)、小于等于(le)、不等于(ne)
字符串比较:支持相等、不等、长度非空(-n)、长度为空(-z),大小比较需转义符号
文件比较:可检测目录(-d)、普通文件(-f)、文件存在(-e)、可读(-r)、可写(-w)、可执行(-x)、文件非空(-s)等状态
3. 复合条件与增强语法
复合条件测试:通过布尔运算符拼接多条件
逻辑与:[ 条件1 ] && [ 条件2 ],两条件同时成立为真
逻辑或:[ 条件1 ] || [ 条件2 ],任一条件成立即为真
双括号 (( 表达式 )):支持高级数学运算,符号无需转义,可使用自增、幂运算、位运算等写法
双方括号 [[ 表达式 ]]:test 的增强写法,扩展字符串比较能力,支持通配符模式匹配
4. case 多值匹配
用于单个变量的多值匹配场景,可替代大量 elif 分支,语法更清晰。
用 | 连接多个匹配模式
*) 作为默认分支,匹配所有未命中的情况
每个分支以 ;; 结尾,整体语句以 esac 结束
二、循环控制命令
1. for 循环
用于遍历一系列值,每次迭代取一个值执行指定命令,以 done 标记结束。
常见取值方式:直接读取列表、从变量取值、处理含特殊符号的复杂值、读取命令执行结果、修改IFS分隔符、通配符遍历目录
支持C语言风格写法 for (( 初始值; 条件; 迭代 )),可同时迭代多个变量,条件不成立时循环终止
2. while 循环
相当于 if-then 与循环的结合:测试命令退出码为0时持续循环,返回非0时停止。
测试条件写法与 if 语句完全一致,可搭配 test 或方括号
循环内必须修改测试条件的值,否则会进入死循环
支持多个测试命令,所有命令会在每次迭代中全部执行
3. until 迭代语句
逻辑与 while 完全相反:测试命令退出码非0时执行循环体,返回0时循环结束,适合“直到满足条件就停止”的场景。
4. 嵌套循环
循环内部可嵌套任意循环语句,总执行次数为各层循环次数的乘积。常配合修改 IFS 环境变量,用于逐行逐字段处理文件数据。
5. 循环控制命令
break:立即跳出当前正在执行的循环
continue:终止本次循环,直接进入下一轮迭代
两者均可后跟数字 n,指定要跳出/跳过的循环层级,处理多层嵌套场景
6. 循环输出重定向
在 done 关键字后追加重定向符号或管道,可将循环全部输出写入文件或交给后续命令处理,无需打印到终端,例如 done > output.txt、done | sort。

练习部分:

使用if-then语句相关练习题:

使用if-then语句相关练习题操作结果:

Case命令相关练习题:

Case命令相关练习题操作结果:

for循环语句相关练习题:

for循环语句相关练习题操作结果:

until迭代语句相关练习题:

until迭代语句相关练习题操作结果:

嵌套循环相关练习题:

嵌套循环相关练习题操作结果:

重定向循环的输出相关练习题:

重定向循环的输出相关练习题操作结果:

http://www.cnnetsun.cn/news/3265815.html

相关文章:

  • MCP Scanner高级配置:如何自定义YARA规则检测特定安全威胁
  • WVP-GB28181-Pro语音对讲功能终极指南:从配置到故障排查的完整解决方案
  • raylib-games实战教程:Global Game Jam获奖游戏开发全流程
  • 10个gphotos-uploader-cli实用技巧:提升批量上传效率的秘密
  • GBFR Logs终极指南:如何在碧蓝幻想Relink中实现精准伤害统计与团队优化
  • 145、【Agent】【OpenCode】启动分析(ANSI SGR)
  • 终极iOS越狱应用一键安装指南:TrollInstallerX免费工具完整教程
  • AIE技术驱动直播视频智能剪辑:从硬件架构到工程实践
  • 思源宋体CN:7种字重的免费商用中文字体完全指南
  • Seq2Seq-PyTorch高级技巧:Beam Search与Greedy Decoding解码策略对比
  • 掌握TradingView MCP Jackson CLI命令:从tv brief到数据导出全攻略
  • AIChatWeb完全指南:3分钟搭建专属AI聊天平台的终极技巧
  • LlamaIndex工程实践:构建生产级Agentic RAG系统
  • 目标检测的场景适配困境:使用Darknet YOLO的类别定制与权重优化实战指南
  • HarmonyOS 小游戏《对战五子棋》开发第25篇 - 最后一手标记
  • 如何安全合规地进行微信数据备份:开源工具合规使用终极指南
  • 位置智能:从“知道你在哪里“到“理解空间“的范式跃迁
  • 3分钟掌握:如何在Draw.io中用代码生成专业图表
  • 2026 年最佳智能笔记本推荐:各类型产品特点与适用人群全解析
  • 生命涌现的小龙虾技能之【Elderly Toilet Time Abnormal Detection (>30 min) | 老年人如厕时间异常(超30分钟)识别】简介
  • Excel常见函数、常见操作记录
  • 从电视盒子到全能服务器:Armbian系统在Amlogic设备上的完全指南
  • 2026年最新靠谱英语教学软件推荐 避坑帮你筛掉90%鸡肋工具
  • Agentic AI 的预算,不能只花在模型上
  • League Akari:英雄联盟玩家的智能效率管家
  • 如何用Video2X将老旧视频一键修复成高清画质?完整教程指南
  • LiDPM:重新思考点云补全的 Point Diffusion
  • 终极Windows应用程序兼容性修复指南:VisualCppRedist AIO一站式解决方案
  • 告别风扇噪音!用FanControl打造静音高效的电脑散热系统
  • 终极Rust学习工具指南:如何高效完成100个Rust练习