shell 运算符
目录
算数运算符
关系运算符
布尔运算符
字符串运算符
文件测试运算符
算数运算符
+ 加法; - 减法; * 乘法; / 除法; %取余; = 赋值;
== 相等,判断两个数是否相等,相等则返回true
!= 不等,判断两个数是否相等,不等则返回true
Example:
echo `expr 2 + 2`
echo `expr 2 - 2`
echo `expr 2 \* 2`
echo `expr 2 / 2`
echo `expr 3 % 2`
a=2
b=2
if [ $a == $b ]
then
echo "equal"
elif [ $a != $b ]
then
echo "unequal"
fi
note:
1) 表达式和运算符之间用空格隔开
2)*号之前加\才能运算:2 \* 2
3)`该符合时反引号,不是单引号。
关系运算符
关系运算符只支持数字,不支持字符串,除非字符串的值事数字。
-eq(equal)两数相等,返回true
-ne(unequal) 两数不相等,返回true
-gt (greater than)左边数大于右边数,返回true
-lt (less than)左边数小于右边数,返回true
-ge (great than and equal to) 左边数大于等于右边数,返回true
-le (less than and equal to) 左边数小于等于右边数,返回true
例如:
#/bin/bash
a=2
b=2
if [ $a -ge $b ]
then
echo "a >= b"
else
echo "a < b"
fi
布尔运算符
! not、非。表达式为true则返回false,否则返回true
-o or、或,有一个表达式为true则返回true
-a and、与,两个表达式都为true才返回true
a=1
b=2
if [ $a != $b ]
then
echo "a unequal b"
else
echo "a equal b"
fi
if [ $a -lt 2 -a $b -gt 1 ]
then
echo "a < 2 and b > 1: return true"
else
echo "a < 2 and b > 1: return false"
fi
if [ $a -gt 2 -o $b -gt 1 ]
then
echo "a > 2 or b > 1: retuen true"
else
echo "a > 2 or b > 1: retuen false"
fi
逻辑运算符
&& 逻辑and,
|| 逻辑or
列如:
a=1
b=2
if [[ $a -eq 1 && $b -eq 2 ]]
then
echo "a 等于 1 并且 b 等于 2 return true"
else
echo "a 等于 1 并且 b 等于 2 return false"
fi
if [[ $a -eq 1 || $b -eq 1 ]]
then
echo "a 等于 1 或者 b 等于1 return true"
else
echo "a 等于 1 或者 b 等于1 return false"
fi
字符串运算符
= 判断两个字符串是否相等,相等返回true
!= 判读两个字符串是否相等,不等返回true
-z 检测字符串的长度是否为0,是0返回true
-n 检测字符串的长度是否为0,不是0返回true
$ 检测字符串是否为空,不为空返回 true
a="a"
b="b"
if [ $a = $b ]
then
echo "a 等于 b"
else
echo "a 不等于 b"
fi
文件测试运算符
文件测试运算符用于检测文件的各种属性。
-d file 检测文件是否是目录,如果是,则返回 true。
-f file 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true
-r file 检测文件是否可读,如果是,则返回 true。
-s file 检测文件是否为空(文件大小是否大于0),不为空返回 true
-e file 检测文件(包括目录)是否存在,如果是,则返回 true。
file="/etc/"
if [ -d $file ]
then
echo "file is dir"
else
echo "file is not dir"
fi

浙公网安备 33010602011771号