Bash支持很多运算符,如算术运算符、关系运算符、布尔运算符、字符串运算符和文件测试运算符。
算术运算符
原生的bash不支持简单的数学运算,但是可以通过其它命令实现。如awk和expr,其中expr最常用。
expr是一款表达式计算常用工具,利用它可以实现表达式的求值操作。如:
#!/bin/bash val=`expr 2 + 2` echo ${val}运行结果输出4。
特别注意三点:
表达式中,运算符的操作数之间必须要有空格,如"2+2"是不对的,会直接输出"2+2"。
表达式连同"expr"必须被反引号包含,也就是前面讲的"命令替换"。
表达式中,乘法运算必须加反斜杠,即"\*"才表式乘法,直接使用"*"会出错。
算术运算符表
运算符 说明 + 加法 - 减法 * 乘法(使用时需在*前加反斜杠) / 除法 % 取余 = 赋值 ==
相等(相等为true) != 不相等(不相等为true)
关系运算符
关系运算符用来比较两个数据的关系。
关系运算符表
运算符 说明 -eq 检测两个数据是否相等,如[ $a -eq $b ] -ne 检测两个数据是否不相等。如[ $a -ne $b ] -gt 检测左边的数据是否大于右边,如[ $a -gt $b ] -lt 检测左边的数据是否小于右边,如[ $a - lt $b ] -ge 检测左边的数据是否大于等于右边,如[ $a -ge $b ] -le 检测左边的数据是否小于等于右边,如[ $a -le $b ] 注意,条件表达式需要放在方括号[]中,并且和方括号之前必须有空格。
关系运算符只支持数值,不支持字符串,除非字符串是数字。
布尔运算符
布尔运算符只能对布尔型数据进行操作。
布尔运算符表
运算符 说明 ! 非运算,对布尔值进行取反操作 -o 或运算,对两个布尔值进行取或操作 -a 与运算,对两个布尔值进行与操作
字符串运算符
字符串运算符表
运算符 说明 = 检测两个字符串是否相等。如[ $a = $b ] != 检测两个字符串是否不相等,如[ $a = $b ] -z 检测字符串长度是否为0。如[ -z $a ] -n 检测字符串长度是否不为0。如[ -n $a ] str 检测字符串是否为空。如[ $a ]
文件测试运算符
文件测试运算符用于检测Unix文件的各种属性。
文件测试运算符表
运算符 说明(file表示要检测的文件) -b file 检测文件是否是块设备文件。如[ -b $file ] -c file 检测文件是否是字符设备文件。如[ -c $file ] -d file 检测文件是否是目录。如[ -d $file ] -f file 检测文件是否是普通文件(非目录,非设备文件)。如[ -f $file ] -g file 检测文件是否设置了SGID位。如[ -g $file ] -k file 检测文件是否设置了粘着位。 -p file 检测文件是否是具名管道。 -u file 检测文件是否设置了SUID位。 -r file 检测文件是否可读。 -w file 检测文件是否可写。 -x file 检测文件是否可执行。 -s file 检测文件是否为空(大小是否为0)。 -e file 检测文件(包括目录)是否存在.。