Bash Shell 结构化命令 一、结构化命令基础if-then 系列语句结构化命令用于给Shell脚本增加流程逻辑根据条件选择执行/跳过代码块核心依托if体系依靠命令退出状态码0成功/非0失败判断是否执行then代码块。1. 基础单分支if-then标准换行写法支持if内部嵌套if语句实现多层复杂判断。二、test命令自定义条件判断核心测试工具原生if仅能判断命令执行结果test命令可自定义数值、字符串、文件三类条件条件成立返回0不成立返回非0。1. 两种等价语法![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/1405537bf0aa43f992e6dcca0c224f56.png2. 三大测试类型1数值比较仅支持整数不支持浮点数比较符作用-eq相等-ne不等-gt大于-ge大于等于-lt小于-le小于等于注意浮点数值如5.55使用会直接报错。2字符串比较相等判断、!区分大小写、标点大小比较、使用时必须转义\\排序逻辑与sort相反空值检测-z字符串长度为0空、-n字符串非空。3文件/目录状态测试用于检测Linux文件系统对象属性常用参数-e file文件/目录是否存在-d file存在且为目录-f file存在且为普通文件-r/-w/-x可读、可写、可执行-nt/-ot文件新旧对比三、复合条件逻辑布尔与/或多条件组合判断两种运算符逻辑与 [条件1] [条件2]两个条件同时成立才为真逻辑或 ||[条件1] || [条件2]任意一个条件成立即为真示例同时判断目录存在、目录内文件可写。四、高级扩展双括号(( ))、双方括号[[ ]]1. 双括号(( 数学表达式 ))专门处理高级数学运算弥补test仅支持简单整数比较的短板支持幂运算**、自增自减/--、位移、位运算、逻辑/||大于/小于号无需转义可直接写 可直接在括号内完成变量赋值。2. 双方括号[[ 字符串表达式 ]]bash专属字符串增强判断兼容test全部字符串语法新增模式匹配功能支持通配符、正则匹配变量容错性更强空变量不易报错适合用户名、文本模糊匹配场景。五、核心注意事项单方括号[ ]前后、内部条件两侧必须加空格语法硬性要求test数值比较仅限整数浮点运算需使用双括号普通[ ]中字符串大小比较必须转义[[ ]]、(( ))无需转义[ ]是POSIX标准全shell兼容[[ ]]、(( ))仅bash可用。六、课程小结基础流程控制if-then单分支、if-then-else双分支、if-elif多分支支持if嵌套条件测试核心test命令与简写[ ]覆盖数值、字符串、文件三类判断多条件组合与、||或复合逻辑高级增强(( ))高级数学运算、[[ ]]字符串模式匹配。提交作业时附上CSDN文章链接。