一、前言本次为Shell第十次课程实操作业围绕结构化分支语法完成Xshell落地实操覆盖 if-then 、 if-then-else 、 elif 多分支、 test 命令、单方括号 [] 、算术双括号 (()) 、模式匹配双方括号 [[]] 额外补充嵌套if、复合条件判断案例。文章拆解概念含义、命令参数用途、实操代码与运行效果搭建完整的Shell分支判断知识框架所有操作均留存终端截图用于作业佐证。二、分模块知识点概念实操演示2.1 基础分支if-then语句概念解释if-then 是Shell最基础的结构化分支语句对括号内的条件做校验判定结果为真成立就执行 then 到闭合关键字 fi 之间的代码条件不成立时直接跳过整块分支代码不执行内部逻辑适合只需做“成立才处理”的单向判断场景。实操脚本新建脚本 vim demo_if_base.sh 插入模式填入代码bash#!/bin/bashscore75if [ $score -gt 60 ]thenecho “本次考试分数满足及格标准”fi按 Esc 输入 :wq 保存退出执行 bash demo_if_base.sh运行结果终端打印 本次考试分数满足及格标准 若将score改为50无任何输出。2.2 双向分支if-then-else语句概念解释在单向分支基础上补充兜底逻辑条件成立执行 then 区块代码条件不成立自动运行 else 内部代码实现二选一的分流逻辑是成绩合格校验、任务成败判定的高频写法。实操脚本 vim demo_if_else.shbash#!/bin/bashscore52if [ $score -ge 60 ]thenecho “成绩及格”elseecho “成绩不及格需要补考”fi保存后执行 bash demo_if_else.sh运行输出 成绩不及格需要补考2.3 多分支串联elif语句概念解释借助 elif 拼接多组判断条件自上而下依次校验条件只要某一条条件命中执行对应代码块后直接终止整条分支适配成绩分档、区间等级判定这类多区间筛选需求。实操脚本 vim demo_elif.shbash#!/bin/bashscore87if [ $score -ge 90 ]thenecho “成绩评级优秀”elif [ $score -ge 80 ]thenecho “成绩评级良好”elif [ $score -ge 60 ]thenecho “成绩评级及格”elseecho “成绩评级不及格”fi保存执行脚本输出结果 成绩评级良好2.4 条件校验工具test命令概念解释test 是Shell原生条件检测工具支持三类校验维度整数大小对比、字符串内容比对、文件/目录的存在性、权限状态筛查是分支判断底层的条件判定工具。常用数值判断参数 -gt 大于、 -lt 小于、 -ge 大于等于、 -le 小于等于、 -eq 等于、 -ne 不等于文件参数 -f 校验普通文件、 -d 校验文件夹。终端直接单行实操逐条回车执行bash1.数值判断test 15 -gt 10 echo “15比10更大”2.字符串比对str_a“作业测试”str_b“作业测试”test “strastr_a stra​str_b” echo “两段字符串内容完全一致”3.文件存在校验切换到sh_script目录后执行test -f demo.txt echo “demo.txt文本文件正常存在”2.5 test简写形式单方括号 [ ]概念解释单方括号 [ ] bash内置语法功能与 test 完全等价是日常开发主流简写格式硬性语法约束左方括号后、右方括号前必须打空格空格缺失会触发语法报错。实操命令bash校验文件[ -f demo.txt ] echo “方括号简写校验文件存在”做整数对比[ 9 -lt 12 ] echo “9小于12”2.6 算术双括号 (( )) 课件幂次方案例复刻概念解释双括号专门做高级整数算术运算、数值条件判断原生支持 ** 幂次方运算不用做符号转义适配数值计算类分支逻辑。复刻课件脚本 vim double_arithmetic.shbash#!/bin/bash#Using double parenthesisecho “Using double parenthesis”var110if (( var1 ** 2 90 ))then(( var2 var1 ** 2 ))echo “The square of $var1 is $var2”fi保存运行脚本终端输出plaintextUsing double parenthesisThe square of 10 is 1002.7 模式匹配双方括号 [[ ]] 课件字符串匹配复刻概念解释双方括号兼容单方括号全部基础能力拓展支持通配符模糊匹配、字符串高级模式校验普通单方括号无法实现通配符匹配场景统一选用 [[ ]] 编写。复刻课件脚本 vim pattern_match.shbash#!/bin/bash#Using pattern matchingecho “Using pattern matching”if [[ $USER “zhang” ]]thenecho “Hello, $USER”elseecho “Sorry, I do not know you”fiecho “******************************”保存后执行脚本补充说明虚拟机当前登录用户名不是zhang会输出else分支提示修改系统用户名或改写匹配字符串即可命中then分支。三、Shell结构化命令知识框架汇总语法分类 具体语法 核心用途 硬性语法注意事项单层单向分支 if-then 条件成立执行指定逻辑 分支结尾必须写 fi 闭合双向分流分支 if-then-else 做二选一的结果分流 else区块不能单独脱离if使用多级区间分支 elif 多档位、多区间依次筛选 条件阈值建议按从高到低排序底层条件检测 test 数值、字符串、文件三类状态校验 字符串变量建议用双引号包裹test简写写法 单方括号 [ ] 简化test命令书写 括号左右两侧强制预留空格算术运算判断 双括号 (( )) 整数比较、幂次方等算术运算 内部变量不用加 $ 取值高级文本校验 双方括号 [[ ]] 通配符模糊字符串模式匹配 兼容单方括号所有常规判断进阶拓展写法 嵌套if、 /复合条件四、实操踩坑避坑总结单方括号空格疏漏 [demo.txt] 这类无空格写法直接报语法错误左右必须预留空格elif 条件排序颠倒低分阈值写在前侧会造成评级分级逻辑错乱test 字符串相等判定 符号左右需要空格紧贴符号会判定成字符串拼接普通 [ ] 不能写通配符 * 做模糊匹配字符串模糊检索必须改用 [[ ]] Shell所有if分支末尾必须用 fi 闭合代码块漏写fi脚本直接运行报错算术双括号内部做变量赋值、比对变量名称不需要补充 $ 前缀。五、课程小结结构化分支语句打破了Shell脚本自上而下固定顺序执行的限制脚本可以参照数值大小、文本内容、文件状态、多组联合条件动态分流执行代码简单单向筛选选用基础 if-then 二分流业务搭配 else 多区间分级借助 elif 串联基础条件校验优先用 [ ] 整数幂次方、复杂算术判断选用 (()) 模糊文本匹配启用 [[ ]] 依托嵌套if、 / || 复合条件能实现多层复杂业务逻辑判定可支撑自动化运维脚本的业务决策、异常分流需求。