表达式
原生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 |