盈盈一水间,脉脉不得语

shell运算符

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 检测文件(包括目录)是否存在.。

 

 

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注