注意
- 运算符两端一定要有空格
- 表达式要使用 ` 反引号 包着
val=expr 8 + 8
echo “两数之和为 : $val”
1. 算术运算符
- 加法
val=`expr 3 + 4`
echo "两数之和为 : $val"
两数之和为 : 7
- 减法
val=`expr 4 - 3`
echo "两数之差为 : $val"
两数之差为 : 1
- 乘法
val=`expr 3 \* 4`
echo "两数乘积为 : $val"
两数乘积为 : 12
- 除法
val=`expr 4 / 3`
echo "两数相除为 : $val"
两数相除为 : 1
- 取余
val=`expr 4 % 3`
echo "两数取余为 : $val"
两数取余为 : 1
- 赋值
val1=hello
val2=$val1
echo $val2
- 相等
注意注意,方括号两侧一定要有空格一定要有空格
val1=8
val2=8
if [ $val1 == $val2 ]
then
echo "相等"
fi
- 不等
#!/bin/bash
val1=3
val2=4
if [ $val1 != $val2 ]
then
echo "不等"
fi
2. 关系运算符
关系运算符只支持数字,不支持字符串,如果字符串的值是数字则可以使用。
-
-lt(less than 小于)
-
-le(less equal 小于等于)
-
-eq(equal 等于)
-
-gt (greater than 大于)
-
-ge (大于等于)
-
-ne(Not equal 不等于)
案例val1=3 val2=4 if [ $val1 -lt $val2 ] then echo "小于" else echo "大于" fi if [ $val1 -eq $val2 ] then echo "相等" else echo "不等" fi
3. 布尔运算符
- ! 非运算
- -o 或运算
- -a 与运算
案例
val1=3
val2=4
if [ $val1 != $val2 ]
then
echo "不等"
fi
val1=3
val2=4
if [ $val1 -lt 10 -o $val2 -gt 1 ]
then
echo "$val1 小于 10 或 $val2 大于 1 : 返回 true"
else
echo " $val1 小于 10 或 $val2 大于 1 : 返回 false"
fi
##结果:3 小于 10 或 4 大于 1 : 返回 true
val1=3
val2=4
if [ $val1 -lt 3 -a $val2 -gt 1 ]
then
echo "$val1 小于 10 或 $val2 大于 1 : 返回 true"
else
echo " $val1 小于 10 或 $val2 大于 1 : 返回 false"
fi
## 结果:3 小于 10 或 4 大于 1 : 返回 false
4. 逻辑运算符
- && :AND
- || : OR
a=3
b=4
if [[ $a -lt 2 && $b -gt 3 ]]
then
echo "返回 true"
else
echo "返回 false"
fi
## 结果:返回 false
if [[ $a -lt 2 || $b -gt 3 ]]
then
echo "返回 true"
else
echo "返回 false"
fi
## 结果:返回 true
5. 字符串运算符
- = : 如果两个字符串相等,则为true
- != :如果两个字符串不相等,则为true
- -z :字符串长度为0,则为true
- -n :字符串长度不为0,则为true
- $ : 字符串不为空,则为true
a=hello
b=hello1
if [ $a = $b ]
then
echo "相等"
else
echo "不等"
fi
if [ -z $a ]
then
echo "字符串长度为0"
else
echo "字符串长度不为0"
fi
## 结果:字符串长度不为0
if [ -n $a ]
then
echo "字符串长度为0"
else
echo "字符串长度不为0"
fi
## 结果:字符串长度不为0
a=""
b=hello1
if [ $a ]
then
echo "字符串长度为0"
else
echo "字符串长度不为0"
fi
a=""
b=hello1
if [ $a ]
then
echo "字符串不为空"
else
echo "字符串为空"
fi
6. 文件测试运算符
在此例举常用的两个文件测试运算符
- -s file : 判断文件是否为空,不为空则为true
- -e file :判断文件或者目录是否存在,如果存在,则返回 true
案例
if [ -s $file ]
then
echo "文件不为空"
else
echo "文件为空"
fi
if [ -e $file ]
then
echo "文件存在"
else
echo "文件不存在"
fi