Shell不得不学之条件测试、if语句及分支

一 、条件测试操作

1.1、test命令

测试表达式是否成立,若成立返回时,否则返回其他数值

格式1:test 条件表达式
格式2:[ 条件表达式 ]

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

1.2、文件测试

[ 操作符 文件或目录 ]

常用的测试操作符

-d :测试是否为目录(Directory)
-e :测试目录或文件是否存在(Exist)
-f :测试是否为文件(File)
-r :测试当前用户是否有权限读取(Read)
-w :测试当前用户是否有权限写入(Write)
-x :测试当前用户是否有权限执行(eXcute)

在这里插入图片描述

[root@localhost ~] #【-d /media/cdrom】&&echo "yes"
                                                                 逻辑与,“而且”的意思

在这里插入图片描述

1.3、 整数值比较

[ 整数1 操作符 整数2 ]  

常用的测试操作符

-eq :等于(Equal)
-ne :不等于(Not Equal)
-gt :大于(Greater Than)
-lt :小于(Lesser Than)
-le :小于或等于(Lesser or Equal)
-ge :大于或等于(Greater or Equal)

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.4、 浮点运算

bash不支持浮点运算,如果需要进行浮点运算,需要借助bc,awk处理。
#!/bin/bash
#加
f=$ (echo "4.3+2.5"|bc)
echo "4.3+2.5=$f"
#减
f=$ (echo "4.3-2.5"|bc)
echo "4.3-2.5=$f"
#乘
f=$(echo "4.30*2.50"|bc)
echo "4.3*2.5=$f"
#除
f=$(echo "4.3/2.5"|bc)
echo "4.3/2.5=$f"
#混合运算
f=$(echo "2.2/(2.2-1.1)*2+1.1"|bc)
echo "2.2/(2.2-1.1) *2+1.1=$f"


awk   BEGIN
#加
f=$(awk 'BEGIN{print 4.5+3.4 }')
echo "4.5+3.4"=$f
减
f=$ (awk 'BEGIN{print 4.5-3.4 }')
echo "4.5-3.4=$f"
乘
f=$ (awk 'BEGIN{print 4.5*3.4 }')
echo "4.5*3.4=$f"
除
f=$ (awk 'BEGIN{print 4.5/3.4 )')
echo "4.5/3.4=$f"
混合
f=$(awk 'BEGIN{print (4.5-3.4)*2+3 }')
echo " (4.5-3.4) *2+3=$f"

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.5、字符串比较

格式1:

[ 字符串1 = 字符串2 ]
[ 字符串1 != 字符串2 ]

格式2:

[ -z 字符串 ]

常用的测试操作符

= :字符串内容相同
!= :字符串内容不同,!表示相反的意思
-z : 字符串内容为空
-n:检测字符串是否存在

在这里插入图片描述

1.6、逻辑测试

格式1:

[ 表达式1 ] 操作符 [ 表达式2 ] ···

格式2:

命令1 操作符 命令2 ·······

常用的测试操作符

-a或&& :逻辑与,“而且”的意思
-o或|| :逻辑或,“或者”的意思
! :逻辑否,代表取反含义

同一个括号内用-a或-o

两个括号间用&& 或||

&&、||操作符能够正常存在于[[ ]]条件判断结构中,但是如果出现在[]结构中的话,会报错

a=5

[ $a -ne 1] &&  [$a !=2 ]等同于 [ $a -ne 1 -a $a != 2 ]

[[ $a != 1 && $a != 2]]

[[ 2 -lt 3]] && echo true || false

[[ 2 -ge 3]] && echo true || false

在这里插入图片描述

在这里插入图片描述

二 、 if语句的结构

2.1 、单分支结构

在这里插入图片描述
fi结束判断,exit 0正常退出,exit 1异常退出

2.2 、双分支结构

在这里插入图片描述

2.3 、多分支结构

在这里插入图片描述
在这里插入图片描述

三 、 if语句应用示例

3.1、 单分支if语句

判断挂载点目录,若不存在则自动创建
在这里插入图片描述

3.2、 双分支if语句

判断目标主机是否存活,显示检测结果
在这里插入图片描述

3.3 、多分支语句

判断分数范围,分出优秀,合格,不合格三档

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_51431591/article/details/111294789