shell关系运算符介绍

数字比较运算

关系运算符只支持数字,不支持字符串,除非字符串的值是数字。下表列出了常用的关系运算符,假定变量 a 为 10,变量 b 为 20:

15.png

举例:

#!/bin/bash

a=10
b=20

if [ $a -eq $b ]
then
   echo $a -eq $b : a 等于 b
else
   echo $a -eq $b: a 不等于 b
fi
if [ $a -ne $b ]
then
   echo $a -ne $b: a 不等于 b
else
   echo $a -ne $b : a 等于 b
fi
if [ $a -gt $b ]
then
   echo $a -gt $b: a 大于 b
else
   echo $a -gt $b: a 不大于 b
fi
if [ $a -lt $b ]
then
   echo $a -lt $b: a 小于 b
else
   echo $a -lt $b: a 不小于 b
fi
if [ $a -ge $b ]
then
   echo $a -ge $b: a 大于或等于 b
else
   echo $a -ge $b: a 小于 b
fi
if [ $a -le $b ]
then
   echo $a -le $b: a 小于或等于 b
else
   echo $a -le $b: a 大于 b
fi

运行脚本,输出结果如下:

10 -eq 20: a 不等于 b
10 -ne 20: a 不等于 b
10 -gt 20: a 不大于 b
10 -lt 20: a 小于 b
10 -ge 20: a 小于 b
10 -le 20: a 小于或等于 b

相关文章视频教程推荐:linux视频教程

布尔运算符

16.jpg

举例:

    #!/bin/bash

    a=10
    b=20

    if [ $a != $b ]
    then
       echo $a != $b : a 不等于 b
    else
       echo $a != $b: a 等于 b
    fi
    if [ $a -lt 100 -a $b -gt 15 ]
    then
       echo $a 小于 100 且 $b 大于 15 : 返回 true
    else
       echo $a 小于 100 且 $b 大于 15 : 返回 false
    fi
    if [ $a -lt 100 -o $b -gt 100 ]
    then
       echo $a 小于 100 或 $b 大于 100 : 返回 true
    else
       echo $a 小于 100 或 $b 大于 100 : 返回 false
    fi
    if [ $a -lt 5 -o $b -gt 100 ]
    then
       echo $a 小于 5 或 $b 大于 100 : 返回 true
    else
       echo $a 小于 5 或 $b 大于 100 : 返回 false
    fi

脚本运行:

10 != 20 : a 不等于 b
10 小于 100 且 20 大于 15 : 返回 true
10 小于 100 或 20 大于 100 : 返回 true
10 小于 5 或 20 大于 100 : 返回 false

逻辑运算符

以下介绍 Shell 的逻辑运算符,假定变量 a 为 10,变量 b 为 20:

17.jpg

实例:

#!/bin/bash

a=10
b=20

if [[ $a -lt 100 && $b -gt 100 ]]
then
   echo 返回 true
else
   echo 返回 false
fi

if [[ $a -lt 100 || $b -gt 100 ]]
then
   echo 返回 true
else
   echo 返回 false
fi

运行结果:

返回 false
返回 true

字符串运算符

下表列出了常用的字符串运算符,假定变量 a 为 “abc”,变量 b 为 “efg”:

18.jpg

实例:

#!/bin/bash

a=abc
b=efg

if [ $a = $b ]
then
   echo $a = $b : a 等于 b
else
   echo $a = $b: a 不等于 b
fi
if [ $a != $b ]
then
   echo $a != $b : a 不等于 b
else
   echo $a != $b: a 等于 b
fi
if [ -z $a ]
then
   echo -z $a : 字符串长度为 0
else
   echo -z $a : 字符串长度不为 0
fi
if [ -n $a ]
then
   echo -n $a : 字符串长度不为 0
else
   echo -n $a : 字符串长度为 0
fi
if [ $a ]
then
   echo $a : 字符串不为空
else
   echo $a : 字符串为空
fi

运行结果:

abc = efg: a 不等于 b
abc != efg : a 不等于 b
-z abc : 字符串长度不为 0
-n abc : 字符串长度不为 0
abc : 字符串不为空

相关文章教程推荐:linux教程

相关文章

/etc/sysctl.conf这个目录主要是配置一些系统信息,/etc/sys...
1.作用 useradd或adduser命令用来建立用户帐号和创建用户的起...
它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅...
不管是我们在安装软件还是监测软件的使用性能,我们都要随时...
装好Tomcat7后,发现除了本机能访问外界访问不了,岂有此理。...
修改防火墙配置需要修改 /etc/sysconfig/iptables 这个文件,...