08_Shell运算符
一、算数运算符
expr 整数表达式
#!/bin/bash
#整数运算(expr 只能整数运算)
expr 1 + 1
expr 1 \* 2
expr 2 / 1
expr 2 - 1
expr 3 % 2
#结果接收要用 `` 反引号
result=`expr 1 + 1`
echo $result
二、比较运算符
2.1、整数比较运算符
运算符 | 说明 | 举例 |
---|---|---|
-eq | 是否等于,等于返回0,不等返回1 | [ 1 -eq 1 ] |
-ne | 是否不等,不等返回0,等于返回1 | [ 1 -ne 1 ] |
-gt | 左边是否大于右边,大于返回0,小于等于返回1 | [ 1 -gt 1 ] |
-lt | 左边是否小于右边,小于返回0,大于等于返回1 | [ 1 -lt 1 ] |
-ge | 左边是否大于等于右边,大于等于返回0,小于返回1 | [ 1 -ge 1 ] |
-le | 左边是否小于等于右边,小于等于返回0,大于返回1 | [ 1 -le 1 ] |
== | 同上 | ((1==1)) |
!= | 同上 | ((1!=1)) |
> | 同上 | ((1>1)) |
< | 同上 | ((1<1)) |
>= | 同上 | ((1>=1)) |
<= | 同上 | ((1<=1)) |
注意:
整数比较运算符只支持整数,不支持小数和字符串,返回0代表成功,返回1代表失败
2.2、字符串比较运算符
支持比较字符串和小数
运算符 | 说明 | 举例 | 备注 |
---|---|---|---|
== | 是否相等 | [[ $a == $b]] | 也可以使用 = 不推荐,也可以使用 [] 不推荐 |
!= | 是否不等 | [[ $a != $b ]] | 也可以使用 [] 不推荐 |
> | 是否大于 | [[ $a > $b ]] | 也可以使用 [] ,需要转义符 [\>] ,不推荐 |
< | 是否小于 | [[ $a < $b ]] | 也可以使用 [] ,需要转义符 [\<] ,不推荐 |
-z | 字符串长度是否为0,为0则true | [[ -z $a ]] | 也可以使用 [] 不推荐 |
-n | 字符串长度是否不为0,不为0则true | [[ -n $a ]] | 也可以使用 [] 不推荐 |
[[]]
和[]
区别
区别 | [[ ]] | [ ] |
---|---|---|
是否需要转义字符 | 不需要 | 需要 |
是否有word splitting 发生 | 不会 | 会 |
三、布尔运算符
运算符 | 说明 | 举例 |
---|---|---|
! | 取反 | [[ !表达式 ]] |
-o | or运算,有一个为true则为true | [[ 表达式1 -o 表达式2 ]] |
-a | and运算,两个表达式都为true才为true | [[ 表达式1 -a 表达式2 ]] |
四、逻辑运算符
运算符 | 说明 | 举例 |
---|---|---|
&& | 与 | [[ 表达式1 && 表达式2 ]] |
|| | 或 | [[ 表达式1 || 表达式2 ]] |
! | 非 | [[ !表达式 ]] |
注意:
&& 和 ||
必须放在[[]]
或者(())
中使用
!
可以用在[]和[[]]
中 ,不可以在(())
中