shell的运算符包括:
- 算数运算符
- 关系运算符
- 布尔运算符
- 字符串运算符
- 文件测试运算符
算数运算符
可以使用expr或者$(( ))来实现基本的算数运算
下面的脚本包含了所有的算术运算符的用法
echo `expr 1 + 2` # 加
echo `expr 1 - 2` # 减
echo `expr 2 \* 3` # 乘
echo `expr 4 / 2` # 除
echo `expr 10 % 3` # 取余
a=10
b=11
c=$a # 赋值
if [ $b == $c ] # 相等
then
echo true
fi
if [ $b != $c ] # 不等
then
echo false
fi
注意:
- 因为expr不是bash内置的函数,因此使用expr的时候需要加反引号` `
- 乘法需要写作 \*,如果使用$(( ))则不需要这么写
- 所有表达式中的运算符和参数以及[ ]之间必须有空格隔开
关系运算符
运算符 | 作用 |
---|---|
-eq | 相等 |
-ne | 不相等 |
-gt | 大于 |
-lt | 小于 |
-ge | 大于等于 |
-le | 小于等于 |
示例:
a=10
b=11
c=12
if [ $b -eq $c ]
then
echo true
fi
if [ $b -ne $c ]
then
echo false
fi
if [ $a -gt $c ]
then
echo true
fi
if [ $a -lt $c ]
then
echo true
fi
if [ $b -ge $c ]
then
echo true
fi
if [ $b -le $c ]
then
echo true
fi
布尔运算符
运算符 | 含义 |
---|---|
-a 或者 && | 与 |
-o 或者 || | 或 |
! | 非 |
示例:
if [ !false ]
if [ $b -gt $a -a $c -gt $a ] # b>a && c>a
if [[ $b -gt $a && $c -gt $a ]] # b>a && c>a
if [ $b -lt $a -o $c -lt $a ] # b<a || c<a
if [[ $b -lt $a || $c -lt $a ]] # b<a || c<a
- 注意:使用&&和||的时候需要多加一个括号来代表整体
字符串运算符
运算符 | 含义 |
---|---|
= | 字符串相等 |
!= | 字符串不相等 |
-z | 判断字符串长度是否为0,为0返回true |
-n | 判断字符串长度是否为0,为0返回false |
$ | 检测字符串是否为空,不为空返回true |
示例:
arr1="abc"
arr2="abd"
arr3=""
if [ $arr1 = $arr2 ]
then
echo "arr1=arr2"
fi
if [ $arr1 != $arr2 ]
then
echo "arr1!=arr2"
fi
if [ -z $arr3 ]
then
echo "arr3为空"
fi
if [ -n "$arr3" ]
then
echo "arr3为空"
fi