和其他编程语言一样,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 布尔运算符
## 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 | 检测文件(或目录)是否存在 |