1、算术运算符
- Shell 和其他编程一样,支持包括:
算术、关系、布尔、字符串等运算符
。 - 原生 bash 不支持 简单的数学运算,但是可以通过其他命令来实现,例如expr。
- expr 是一款表达式计算工具,使用它能完成表达式的求值操作。
- 例如,两个数相加:
i=2+2
- 表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2。
- 完整的表达式要被 ` 包含,注意不是单引号,在 Esc 键下边。
val=`expr 2 + 2`
echo $val
- 下表列出了常用的算术运算符,假定变量 a 为 10,变量 b 为 20:
运算符 | 说明 | 举例 |
---|---|---|
+ | 加法 | expr $a + $b 结果为 30。 |
- | 减法 | expr $a - $b 结果为 -10。 |
* | 乘法 | expr $a * $b 结果为 200。 |
/ | 除法 | expr $b / $a 结果为 2。 |
% | 取余 | expr $b % $a 结果为 0。 |
= | 赋值 | a=$b 将把变量 b 的值赋给 a。 |
== | 用于比较两个数字,相同则返回 true | [ $a == $b ] 返回 false。 |
!= | 用于比较两个数字,不相同则返回 true | [ $a != $b ] 返回 true。 |
tips:条件表达式要放在方括号之间,并且要有空格,例如: [$a==$b] 是错误的,必须写成 [ $a == $b ]。
- 举例
#!/bin/bash
a=20
b=4
# 加法运算
echo `expr $a + $b`
# 减法运算
echo `expr $a - $b`
# 乘法运算
echo `expr $a \* $b`
# 除法运算
echo `expr $a / $b`
# 还可以通过(())、$(())、$[]进行算术运算
echo "a = $a"
c=$((a + b))
d=$[a + b]
echo "c = $c"
echo "d = $d"
2、关系运算符
- 关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
下表列出了常用的关系运算符,假定变量 a 为 10,变量 b 为 20:
运算符 | 说明 | 英文 | 举例 |
---|---|---|---|
-eq | 检测两个数是否相等,相等返回 true。 | equal | [ $a -eq $b ] 返回 false。 |
-ne | 检测两个数是否不相等,不相等返回 true。 | not equal | [ $a -ne $b ] 返回 true。 |
-gt | 检测左边的数是否大于右边的,如果是,则返回 true。 | greater than | [ $a -gt $b ] 返回 false。 |
-lt | 检测左边的数是否小于右边的,如果是,则返回 true。 | less than | [ $a -lt $b ] 返回 true。 |
-ge | 检测左边的数是否大于等于右边的,如果是,则返回 true。 | Greater than | or equal to [ $a -ge $b ] 返回 false。 |
-le | 检测左边的数是否小于等于右边的,如果是,则返回 true。 | Less than or equal to | [ $a -le $b ] 返回 true。 |