Linux笔记之shell脚本3:测试语句

来源:互联网 发布:游戏试玩网站源码 编辑:程序博客网 时间:2024/06/06 02:15

测试语句用来判定表达式是否成立,成立返回0,失败返回非0

细分可分为:文件测试、逻辑测试、整数值比较、字符串比较


PART 1:文件测试

格式[ 操作符 文件或测试 ]

其中操作符有:

-d是否为目录

-e 是否存在

-f 是否为文件

-r 当前用户是否有读取权限

-w 当前用户是否有写入权限

-x 当前用户是否有执行权限


#判断/etc是否为目录,返回0,成立

[root@okaka Desktop]# [ -d /etc/ ]
[root@okaka Desktop]# echo $?
0

#其他对号入座看看,可以动手试一试
[root@okaka Desktop]# [ -d test.sh ]
[root@okaka Desktop]# echo $?
1
[root@okaka Desktop]# [ -f test.sh ]
[root@okaka Desktop]# echo $?
0

[root@okaka Desktop]# [ -e test.sh ]
[root@okaka Desktop]# echo $?
0
[root@okaka Desktop]# [ -r test.sh ]
[root@okaka Desktop]# echo $?
0
[root@okaka Desktop]# [ -x test.sh ]
[root@okaka Desktop]# echo $?
0
[root@okaka Desktop]# [ -w test.sh ]
[root@okaka Desktop]# echo $?
0



PART 2:逻辑测试

就是最熟悉的与或非(&&  ||  !)啦

#判断user是否不为root用户(当然不是root用户,所以返回0)
[root@okaka Desktop]# su user
[user@okaka Desktop]$ [ $USER != root ]
[user@okaka Desktop]$ echo $?
0
#也可以一句搞定:
[user@okaka Desktop]$ [ $USER != root ] && echo "user"
user

所以:
[root@okaka Desktop]# [ -e test.sh ]
[root@okaka Desktop]# echo $?
等价于
[root@okaka Desktop]# [ -e test.sh ] && echo 0 || echo 1

因此逻辑测试在一定程度上可以代替之后要讲的条件语句



PART 3:整数值比较
操作符有6个:
-eq 是否等于
-ne 是否不等于
-gt 是否大于
-lt 是否小于
-le 是否小于等于
-ge 是否大于等于

#10是否小于9是则输出0,否则输出1
[user@okaka Desktop]$ [ 10 -lt 9 ]
[user@okaka Desktop]$ echo $?
1
#当然也可以这样做
[user@okaka Desktop]$ [ 10 -lt 9 ] && echo 0 || echo 1
1


#还可以比较一下内存:
[root@okaka ~]# FreeMem=`free -m|grep cache:|awk '{print$3}'`
[root@okaka ~]# echo $FreeMem 
708

[root@okaka ~]# [ $FreeMem -lt 1024 ] && echo "have no memory"
have no memory




PART 4:字符串比较
操作符有3个:
= 比较字符串内容是否相同
!= 比较字符串内容是否不同
-z 字符串内容是否为空

[root@okaka ~]# [ -z $HaHa ]
[root@okaka ~]# echo $?
0

[root@okaka ~]# echo $LANG
en_US.UTF-8
[root@okaka ~]# [ $LANG != "en.US" ] && echo "Not en.US"
Not en.US




原创粉丝点击