news 2026/7/10 16:04:47

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
《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迭代语句相关练习题操作结果:

嵌套循环相关练习题:

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

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/10 16:03:01

MCP Scanner高级配置:如何自定义YARA规则检测特定安全威胁

MCP Scanner高级配置:如何自定义YARA规则检测特定安全威胁 【免费下载链接】mcp-scanner Scan MCP servers for potential threats & security findings. 项目地址: https://gitcode.com/gh_mirrors/mc/mcp-scanner MCP Scanner是一款强大的安全扫描工具…

作者头像 李华
网站建设 2026/7/10 16:00:56

raylib-games实战教程:Global Game Jam获奖游戏开发全流程

raylib-games实战教程:Global Game Jam获奖游戏开发全流程 【免费下载链接】raylib-games A collection of small sample games made with raylib 项目地址: https://gitcode.com/gh_mirrors/ra/raylib-games 想要在48小时内完成一款完整的游戏开发吗&#x…

作者头像 李华
网站建设 2026/7/10 16:00:27

10个gphotos-uploader-cli实用技巧:提升批量上传效率的秘密

10个gphotos-uploader-cli实用技巧:提升批量上传效率的秘密 【免费下载链接】gphotos-uploader-cli Command line tool to mass upload media folders to your google photos account(s) (Mac OS / Linux) 项目地址: https://gitcode.com/gh_mirrors/gp/gphotos-u…

作者头像 李华
网站建设 2026/7/10 15:58:14

145、【Agent】【OpenCode】启动分析(ANSI SGR)

【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除 标题 145、【Agent】【OpenCode】启动分析&am…

作者头像 李华