
一、基础 if 分支语法if-then 基础结构 if 后执行一条命令命令退出码为 0成功则执行 then 内代码fi结束判断可分两行或同行加分号简写if commandthen执行语句fi# 同行简写if command; then执行语句fiif-then-else 二分支 命令执行失败时执行 else 内语句if commandthen成功语句else失败语句fiif-elif 多分支 连续多条件判断依次匹配匹配后终止if 命令1then语句1elif 命令2then语句2elif 命令3then语句3fi二、test 条件测试if 仅能判断命令执行状态test 可检测数值、字符串、文件三类条件两种等价写法if test 条件/if [ 条件 ]注意[]左右必须留空格1. 数值比较仅支持整数-eq 相等、-ne 不等、-gt 大于、-ge 大于等于、-lt 小于、-le 小于等于 浮点无法使用 test 数值判断2. 字符串比较str1 str2相等、str1 ! str2不等/需转义-n 字符串长度非空-z 字符串长度为空3. 文件状态检测-e 文件存在、-d 目录、-f 普通文件-r 可读、-w 可写、-x 可执行 -s 文件非空、-O 属当前用户、-G 属当前用户组-nt 文件更新、-ot 文件更旧三、复合条件判断布尔逻辑逻辑与两组条件同时成立才为真[ 条件1 ] [ 条件2 ]||逻辑或任意一组条件成立即为真[ 条件1 ] || [ 条件2 ]四、高级判断双括号、双方括号双括号(( ))支持高级数学运算、幂运算、自增自减、逻辑符号比较符无需转义仅用于数值运算双方括号[[ ]]增强字符串判断支持通配符模式匹配无需转义大小于符号五、小结if 系列分支实现流程控制分单分支、二分支、多分支test/[]实现三类条件检测整数、字符串、文件、|| 实现多条件组合判断(( ))高级数值运算[[ ]]字符串模式匹配