一、基础 if 分支语法
if-then 基础结构 if 后执行一条命令,命令退出码为 0(成功)则执行 then 内代码,
fi结束判断;可分两行或同行加分号简写
if command
then
执行语句
fi
# 同行简写
if command; then
执行语句
fiif-then-else 二分支 命令执行失败时,执行 else 内语句
if command
then
成功语句
else
失败语句
fiif-elif 多分支 连续多条件判断,依次匹配,匹配后终止
if 命令1
then
语句1
elif 命令2
then
语句2
elif 命令3
then
语句3
fi
二、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/
[]实现三类条件检测:整数、字符串、文件;&&、|| 实现多条件组合判断;
(( ))高级数值运算,[[ ]]字符串模式匹配;