课时6 条件测试
一、测试操作规范
测试的本质:
就是一条操作命令,并根据 $? 的值来判断条件是否成立。
测试操作规范:
格式1:test 条件表达式
格式2:[ 条件表达式 ]
测试操作的练习方法:直接跟 && echo YES 判断结果。
返回YES,则表达式为真;没有返回结果,则表达式为假。方法如下:
[ 条件表达式 ] && echo YES
示例1:测试/etc/grub是否为一个目录
[
root@localhost ~]# [ -d "/etc/grub" ]
&& echo YES
YES
二、文件状态的检测
存在及识别:
-e
|
目标是否存在(Exist)
|
-d
|
是否为目录(Directory)
|
-f
|
是否为文件(File)
|
权限的检测:
-r
|
是否有读取(
Read)权限
|
-w
|
是否有写入(
Write)权限
|
-x
|
是否有可执行(e
Xcute)权限
|
示例1:测试/etc/fstab是否为一个文件
[
root@localhost ~]# [ -f "/etc/fstab" ] && echo YES
YES
[
root@localhost ~]# [ -f "/etc" ] && echo YES
[
root@localhost ~]#
示例2:测试/etc/shadow文件是否有相关权限
[
root@localhost ~]# ls -l /etc/shadow
-
r-------- 1 root root 1386 11-08 20:39 /etc/shadow
[
root@localhost ~]# [ -x "/etc/shadow" ] && echo YES //没有可执行权限
[
root@localhost ~]# [ -r "/etc/shadow" ] && echo YES //有读取权限
YES
[
root@localhost ~]# [ -w "/etc/shadow" ] && echo YES
//有写入权限(所有者例外)
YES
[
root@localhost ~]#
三、整数值比较、字串匹配
整数值比较:数值1 比较操作符 数值2
-eq
|
等于(
Equal)
|
-ne
|
不等于
(Not Equal)
|
-gt
|
大于(
Greater
Than)
|
-lt
| 小于(Lesser Than) |
-ge
|
大于或等于
(Greater or Equal)
|
-le
| 小于或等于(Lesser or Equal) |
字符串匹配:字符串1 比较操作符 字符串2
= |
字符串相同
|
!= | 字符串不同 |
示例1:整数值比较,判断当前登陆用户数的情况
[
root@localhost ~]# who | wc -l
2
[
root@localhost ~]# [ $(
who | wc -l)
-eq 2 ]
&& echo YES
YES
[
root@localhost ~]#
示例2:字符串比较,判断当前登陆用户是否为root
[
root@localhost ~]# echo $USER
root
[
root@localhost ~]# [ $USER = "root" ] && echo YES
YES
YES
[
root@localhost ~]#