一、目标

centos7的比较运算符、字符串运算符、逻辑运算符、文件操作符的学习

二、平台

centos7.6

三、整数型比较运算符
num1 -eq num2     如果num1等于num2,测试结果为0
num1 -ge num2     如果num1大于等于num2,测试结果为0
num1 -gt num2     如果num1大于num2,测试结果为0
num1 -le num2     如果num1小于等于num2,测试结果为0
num1 -lt num2     如果num1小于num2,测试结果为0
num1 -ne num2     如果num1不等于num2,测试结果为0

//格式:[空格+"$变量名"+空格+表达式+空格+数值+空格]
[root@localhost ~]# k=3721
[root@localhost ~]# 
[root@localhost ~]# [ "$k" -eq 3721 ];echo $?
0
[root@localhost ~]# [ "$k" -eq 3722 ];echo $?
1
[root@localhost ~]# [ "$k" -ne 3722 ];echo $?
0
[root@localhost ~]# 
[root@localhost ~]# a1=100
[root@localhost ~]# a2=200
[root@localhost ~]# 
[root@localhost ~]# [ "$a1" -gt "$a2" ];echo $?
1
[root@localhost ~]# [ "$a1" -ne "$a2" ];echo $?
0
[root@localhost ~]#

这玩意不适合浮点型的数值做比较。

 

四、字符串运算符

字符串运算符可以用来测试字符串是否为空,即判断两个字符串是否是相等或不相等,主要用来测试用户输入的是否为控制或者判断比较字符串变量。
字符串运算符只能使用test,不能使用[],两个字符串比较时,变量要用双引号括起来,变量为空也得用双引号括起来。

[root@localhost ~]# s1="";test "$s1";echo $?   //判断字符串是否为空,空返回1,否则为0
1
[root@localhost ~]# s1="2";test "$s1";echo $?  //判断字符串是否为空,非空为0,否则为1,和上面一样
0
[root@localhost ~]# test -n "$s1";echo $?   //-n判断字符串是否不为空 ,非空为0,空是1
0
[root@localhost ~]# test -z "$s1";echo $?    //-z判断字符串是否为空,非空为0,空是1
1
[root@localhost ~]#
[root@localhost ~]# s2="kahn"
[root@localhost ~]# s3="serena"
[root@localhost ~]# 
[root@localhost ~]# [ "$s2" = "$s3"  ]   //判断s2和s3是否想等,相等返回0,不相等返回1
[root@localhost ~]# echo $?
1
[root@localhost ~]# s4="serena"
[root@localhost ~]# 
[root@localhost ~]# [ "$s4" = "$s3"  ];echo $?
0
[root@localhost ~]# 
[root@localhost ~]# [ "$s4" = "serena"  ];echo $?
0
[root@localhost ~]# s5="009"
[root@localhost ~]# 
[root@localhost ~]# [ "$s5" -eq "9" ];echo $?
0
[root@localhost ~]# [ "$s5" = "9" ];echo $?
1
[root@localhost ~]#

 

五、文件操作符

-d file    测试file是否是目录
-e file    测试file是否存在
-f file     测试file是否是普通文件
-r file     测试file是否可读
-s file     测试file是否不为空
-w file     测试file是否可写
-x file     测试file是否可执行
-h file     测试file是不是链接文件

1.例子

[root@localhost xFolder]# ll
total 820
-rw-r--r--. 1 root root 399360 Aug  3 23:35 a.tar
-rw-r--r--. 1 root root     99 Aug  3 22:55 a.txt
[root@localhost xFolder]# 
[root@localhost xFolder]# 
[root@localhost xFolder]# [ -r a.txt ];echo $?     //判断文件a.txt是否可读,0表示是正确
0
[root@localhost xFolder]# [ -w a.txt ];echo $?     //判断文件a.txt是否可写,0表示是正确
0
[root@localhost xFolder]# [ -x a.txt ];echo $?     //判断文件a.txt是否可执行,1表示是不正确
1
[root@localhost xFolder]# [ -f a.txt ];echo $?     //判断文件a.txt是不是普通文件,0表示是
0
[root@localhost xFolder]#

六、逻辑运算符

-o逻辑或、-a逻辑与、!逻辑非

[root@localhost xFolder]# [ -e a.txt ];echo $?    //判断文件是否存在,存在返回0
0
[root@localhost xFolder]# [ ! -e a.txt ];echo $?  //逻辑非,取反就等于1.
1
[root@localhost xFolder]#
[root@localhost xFolder]# s7=10
[root@localhost xFolder]# 下面的意思是s7小于30?或者s7大于100吗? 
[root@localhost xFolder]# [ "$s7" -lt 30 -o "$s7" -gt 100 ];echo $?
0
-o参数逻辑或运算,只要一个为true,那么结果就是true,即本次是成功的真返回0.



[root@localhost xFolder]# [ "$s7" -lt 30 -a "$s7" -gt 100 ];echo $?
1
-a参数是逻辑与,只要一个为false,则结果就是false,即本次结果为1

2019年8月6日23:08:28