表达式
原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。
一个完整的表达式需要用反引号(`)包裹, 在mac系统中,求值表达式也可以这样$(($a + $b))。
表达式和运算符之间必须有空格,如2+2
是不对的,必须写成2 + 2
。
乘号(*)在表达式中必须转义expr $a \* $b
,否则抛出syntax error
条件表达式
条件表达式必须放在方括号内,并且之间要有空格
1 | # 方括号的前后也必须含有空格,可以有多个空格 |
布尔运算符
运算符 | 说明 |
---|---|
! | 非运算 |
-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 |