和其他编程语言一样,bash也有多种类型的运算符,本篇对bash的相关运算符做简单介绍。
一、运算符
1.1 算术运算符
常见的算术运算符,如加(+)、减(-)、乘(*)、除(/)、取余(%)、赋值(=)、相等(==)、不相等(!=)。
bash中使用expr 来进行算术运算。如将算术表达式放在方括号之间,需要有空格。
x=15
y=30val=`expr ${x} + ${y}`
echo "${x} + ${y} = ${val}"if [[ ${x} != ${y} ]]
thenecho "${x} != ${y}"
fi
1.2 关系运算符
关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
常用关系运算符如下
运算符 | 说明 |
---|---|
-eq | 检测两个数是否相等 |
-ne | 检测两个数是否不相等,不相等返回 true |
-gt | 检测左边的数是否大于右边的 |
-lt | 检测左边的数是否小于右边的 |
-ge | 检测左边的数是否大于等于右边的 |
-le | 检测左边的数是否小于等于右边的 |
x=10
y=30if [[ ${x} -lt ${y} ]]
thenecho "${x} -lt ${y}: x 小于 y"
fi
## 1.3 布尔运算符
如下列出常用的布尔运算符
运算符 | 说明 |
---|---|
! | 非运算 |
-o | 或运算, |
-a | 与运算,&& 也表示与运算 |
x=10
y=30if [[ ${x} -lt 20 && ${y} -gt 20 ]]
thenecho "${x} 小于20 且 ${y}大于20"
fiif [[ ${x} -lt 20 || ${y} -lt 20 ]]
thenecho "${x} 小于20 或 ${y}小于20"
fiif ! [[ ${x} -eq 20 ]]
thenecho "${x} 不等于20"
fi
1.4 字符串运算符
常用字符串运算符如下:
运算符 | 说明 |
---|---|
= | 检测两个字符串是否相等 |
!= | 检测两个字符串是否不等 |
-z | 检测字符串长度是否为0 |
-n | 检测字符串长度是否不为0 |
str | 检测字符串是否为空 |
x="xiaoyuzhou"
y=""if [[ -z ${x} ]]
thenecho "-z ${x} 字符串长度为0"
elseecho "-z ${x} 字符串长度不为0"
fiif [[ -n ${y} ]]
thenecho "-z ${y} 字符串长度不为0"
elseecho "-z ${y} 字符串长度为0"
fiif [[ ${y} ]]
thenecho "-z ${y} 字符串不为空"
elseecho "-z ${y} 字符串为空"
fi
1.5 文件测试运算符
文件测试运算符用于检测文件的各种属性
操作符 | 说明 |
---|---|
-b file | 检测文件是否为块设备文件 |
-c file | 检测文件是否是字符设备文件 |
-d file | 检测文件是否是目录 |
-f file | 检测文件是否是普通文件(非目录,非设备文件) |
-r file | 检测文件是否可读 |
-w file | 检测文件是否可写 |
-x file | 检测文件是否可执行 |
-s file | 检测文件是否为空 |
-e file | 检测文件(或目录)是否存在 |