shell运算符
Shell运算符
Shell支持多种运算符:
- 算术运算符
- 关系运算符
- 布尔运算符
- 字符串运算符
- 文件测试运算符
bash本身不支持简单的数学运算,但可以通过其他命令实现,如awk,expr。
expr是表达式计算工具。
note:
1.表达式和运算符直接要有空格
2.表达式必须被``(反引号)包含。
1 #!/bin/ash 2 3 val=`expr 2 + 2` 4 echo "sum:$val"
输出结果:
1 sum:4
算术运算符
+ 加法 `expr $a + $b`
- 减法 `expr $a - $b`
* 乘法 `expr $a \* $b`
/ 除法 `expr $a / $b`
% 取余 `expr $a % $b`
= 赋值 a=$b
== 相等 [$a == $b]
!= 不等于 [$a != $b]
关系运算符
关系运算符只支持数字,不支持字符串。
-eq 检测两个数是否相等,相等返回true
-ne 检测两个数是否不相等,不相等返回true
-gt 检测左边的数大于右边的数,如果是,返回true
-lt 检测左边的数小于右边的数,如果是,返回true
-ge 检测左边的数大于等于右边的数,如果是,返回true
-le 检测左边的数是否小于等于右边的数,如果是,返回true
布尔运算符
! 非运算
-o 或运算,有一个表达式为true,则返回true
-a 与运算,两个表达式都为true,则返回true
逻辑运算符
&& 逻辑的与
|| 逻辑的或
字符串运算符
= 检测两个字符串是否相等,相等返回true
!= 检测两个字符串不相等,不相等返回true
-z 检测字符串长度是否为0, 为0返回true
-n 检测字符串长度是否不为0,不为0返回true
str 检测字符串是否不为空,不为空返回true
文件测试运算符
-b file 检测是否为块设备
-c file 检测是否为字符设备
-d file 检测是否是目录
-f file 检测是否是普通文件
-g file 检测文件是否设备了SGID位
-r file 检测文件是否可读
-w file 检测文件是否可写
-x file 检测文件是否可执行
-s file 检测文件是否为空(文件大学校是否大于0),不为空返回true
-e file 检测文件(包括目录)是否存在,如果是,返回true