您的位置:首页 > 运维架构 > Shell

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

2017-09-19 14:49 531 查看
测试语句用来判定表达式是否成立,成立返回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:字符串比较

baac

操作符有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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: