第一部分 基础结构化判断命令文档 11. if-then 分支语句1.1 基础 if-then 语法Shell 的 if 逻辑和其他语言不同if 后跟一条命令判断命令退出状态码退出码0命令执行成功 → 执行 then 内代码非 0命令失败 → 跳过 then执行后续脚本 基础格式简写同行格式分号分隔示例if pwd判断 pwd 命令是否正常运行if NotaCommand不存在的命令不会执行 then。1.2 if-then-else 双分支命令执行失败时执行 else 代码块适用场景判断用户是否存在、文件是否存在存在输出信息不存在提示。1.3 嵌套 if /elif 多分支嵌套 ifelse 块内部再写完整 if 结构层级多可读性差elif多分支简化写法连续多条件判断无需多层嵌套课堂练习使用 elif 实现用户创建逻辑判断用户名是否存在存在则输出提示 用户信息不存在则检查 /home 下是否有同名文件夹有文件夹输出文件夹内容无文件夹则新建用户每一步输出对应提示。2. test 条件测试命令核心if 仅能判断命令退出码test 实现数值、字符串、文件三类条件判断。2. 两种写法等价规则条件成立返回 0执行 then不成立返回非 0执行 else。2.1 数值比较仅支持整数不支持小数表格判断符号含义n1 -eq n2相等n1 -gt n2n1 大于 n2-lt/-ge/-le/-ne小于、大于等于、小于等于、不等坑bash 无法处理浮点数比较小数会直接报错。2.2 字符串比较相等判断[ $a $b ]/[ $a ! $b ]区分大小写、标点字符串大小/需要转义\\大写字母排序小于小写空值判断-n str字符串非空返回真-z str字符串为空返回真2.3 文件状态测试操作文件 / 目录必备表格参数作用-d file文件存在且是目录-e file文件 / 目录存在-f file普通文件存在-w file文件存在且可写-x file文件存在且可执行-O file文件属当前用户file1 -nt file2file1 比 file2 新示例[ -d $HOME ]判断家目录是否存在。3. 复合条件测试与 / 或用布尔逻辑组合多个 test 条件逻辑与两个条件同时成立才为真||逻辑或任意一个条件成立即为真4. 双方括号 [[]] 双括号 (( ))4.1 双括号(( ))高级数学运算专门处理数值支持 C 语言风格运算符无需转义比较符号 自增val、幂运算**、位移、位运算、逻辑! ||示例4.2 双方括号[[ ]]字符串模式匹配在 test 基础上增加通配符匹配支持模糊匹配5. case 多值匹配语句替代大量 elif匹配单个变量的多种固定值适合固定枚举场景语法case $变量 in 模式1|模式2) 执行语句;; 模式3) 执行语句;; *) 默认分支;; # 匹配所有其他情况 esac课堂练习case 获取系统星期输出每日课程date 命令获取今天周几case 匹配周一至周五分别输出对应课程。第二部分 循环结构化命令文档 21. for 循环两种格式1.1 基础 for in 遍历循环遍历列表、变量、文件、命令输出通用格式5 种遍历方式直接写列表for user in root haolin wang变量存储列表name_lista b c; for u in $name_list复杂带引号字符串for word in I don\t know shell读取文件内容for city in $(cat test.txt)遍历目录通配符for file in ./*判断文件 / 目录IFS 字段分隔符默认以空格、换行、制表符分割修改 IFS 可自定义分隔符如按换行、冒号分割/etc/passwd1.2 C 语言风格 for 循环纯数值循环支持多变量语法for ((赋值;条件;迭代)) do done示例课堂练习for 循环遍历当前目录区分可执行 / 可写文件。2. while 循环先判断条件条件为真退出码 0持续循环条件假停止。while [ 条件 ] do 循环语句 done关键点循环内必须修改判断变量否则死循环支持多条测试命令。 示例数字递减循环3. until 循环while 反向条件为假时循环条件为真直接退出逻辑和 while 完全相反。until [ 条件 ] do 循环语句 done课堂练习until 输出 100 以内 7 的倍数。4. 嵌套循环循环内部包含其他循环for 嵌套 for、for 嵌套 while 等执行次数为内外循环乘积。 课堂练习嵌套循环打印九九乘法表。5. 循环控制break continuebreak直接跳出当前循环break n跳出 n 层嵌套循环continue终止本次迭代直接进入下一轮循环不退出整体循环6. 循环输出重定向与管道在done后添加重定向 / 管道统一处理所有循环输出无需每行单独输出重定向到文件done output.txt管道处理done | sort排序所有输出结果课堂综合练习循环批量创建用户批量创建 Tom、Jerry、Spike 三个用户每个用户家目录新建 download、Picture、Document 文件夹将所有用户主目录文件列表输出到 output.txt。7. 文件批量处理循环 IFS结合修改 IFS 分割/etc/passwd冒号分隔的用户信息逐行、逐字段解析用户数据。三、全章知识点总结判断分支if 系列if-then单分支→ if-else双分支→ elif多分支test/[]数值、字符串、文件三大类条件判断[[]] 支持通配符匹配(( )) 支持复杂数学运算case固定枚举多分支简化大量 elif复合条件 与、|| 或。循环迭代for遍历集合 / C 风格数值循环while条件成立持续循环until条件不成立持续循环嵌套循环、break/continue 控制循环流转IFS 自定义分隔符处理文件循环输出支持重定向、管道。实操重点[]左右必须留空格字符串比较转义符号bash 仅支持整数运算小数无法使用 test 数值判断循环必须更新条件变量防止死循环批量用户、文件遍历、分支判断是脚本高频场景。