表达式

原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。
一个完整的表达式需要用反引号(`)包裹, 在mac系统中,求值表达式也可以这样$(($a + $b))。
表达式和运算符之间必须有空格,如2+2是不对的,必须写成2 + 2
乘号(*)在表达式中必须转义 expr $a \* $b,否则抛出syntax error

条件表达式

条件表达式必须放在方括号内,并且之间要有空格

1
2
3
# 方括号的前后也必须含有空格,可以有多个空格
[ $a == $b ] // right
[$a==$b] // error

布尔运算符

运算符 说明
非运算
-o 或运算, 记忆:or(-o)
-a 与运算, 记忆:and(-a)

关系运算符

关系运算符只支持数字,不支持字符串,除非字符串的值是数字

运算符 说明
-eq equal, 是否相等
-ne not equal, 不相等
-gt greater than, 大于
-lt less than, 小于
-ge greater equal, 大于等于
-le less equal, 小于等于

字符串运算符

假设a=”abc”, b=”efg”

运算符 说明 举例
= 检测2个字符串是否相等, 相等返回true [ $a = $b ], false
!= …., 不相等返回true [ $a != $b ], true
-z 字符串的长度为0,返回true. 记忆: zero [ -z $a ], false
-n …..不为0,返回true. 记忆: not [ -n $a ], true
str 字符串不为空,返回true [ $a ], true