一、目标
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,即本次结果为12019年8月6日23:08:28
















