原生bash不支持数学运算(加,减,乘,除,求余),可以通过awk, expr实现。
expr是一款表达式计算器,使用反引号 `
表达式与运算符之间要有空格
val1=`expr 2 + 2` #有空格
echo $val1 #4
val2=`expr 2+2` #无空格
echo $val2 #2+2
算术运算符
乘法 `expr $a \* $b`
赋值 a=$b
a=10
b=20
val=`expr $a \* $b` #乘法为 \*, expr要加空格
关系运算符
[ expression ] 同test,用于测试
test 3 -gt 5
echo "$?" #正常结果返回0
[ 3 -le 5 ]
echo "$?" #非正常结果返回1
运算 | 表达式 | 说明 |
---|---|---|
相等 | [ $a -eq $b ] | 中括号与变量间有空格 |
不相等 | [ $a -ne $b ] | 中括号与变量间有空格 |
大于 | [ $a -gt $b ] | 中括号与变量间有空格 |
大于等于 | [ $a -ge $b ] | 中括号与变量间有空格 |
小于 | [ $a -lt $b ] | 中括号与变量间有空格 |
小于等于 | [ $a -le $b ] | 中括号与变量间有空格 |
布尔运算符
连接多个测试表达式
运算 | 表达式 | 说明 |
---|---|---|
非 | [ !$b ] | 中括号与变量间有空格 |
或 | [ $a -o $b ] | 中括号与变量间有空格 |
与 | [ $a -a $b ] | 中括号与变量间有空格 |
逻辑运算符
&&
||
字符串运算符
-n 是否不为空
-z 是否为空
文件测试运算符
-e 是否存在
-f 是否文件
-d 是否目录