shell 中的操作符

1、算术操作符

2、关系操作符

3、布尔操作符

4、字符串操作符

5、文件相关操作符

算术操作符

bash shell 没有提供任何机制来执行简单的算术运算,不过我们可以借助于一些其他程序,如 expr

#!/bin/sh

val=`expr 2 + 2`
echo "Total value : $val"

 注意:在操作符与表达式之间必须有空格,整个表达式应该用反引号括起来。

其他可用算术操作符:

+:`expr 10 + 20`

-:`expr 10 - 20`

*: `expr 10 \* 20` (需要转义乘号)

/: `expr 10 / 2`

%: `expr 10 % 3`

=: (赋值) a = $b,将 b 的值赋予 a

==:  [ $a == $b ] 判断两个数是否相等,相等返回 true

!=: [ $a != $b ] 判断两个数是否不想等,不想等返回 true

注意:所有的条件表达式里面的变量、操作符都需要有逗号分隔。至于为什么这样,个人觉得是类似于 $1, $2 ... $n,这种参数获取方式,如果连在一起,可能系统就把这连在一起的两个当作一个操作数什么的。

关系操作符

-eq:判断两个操作对象是否相等,例:[ $a -eq $b ]

-ne:判断两个操作对象是否不想等,例:[ $a -ne $b ] 

-gt:判断第一个操作对象是否大于第二个操作对象,例:[ $a -gt $b ]

-lt:判断第一个操作对象是否小于第二个操作对象,例:[ $a -lt $b ]

-ge:[ $a ge $b ],判断 $a 是否大于等于 $b

-le: [ $a le $b ],判断 $a 是否小于等于 $b

逻辑操作符

-a:与,[ $a -lt 20 -a $b -gt 100 ] ,$a 小于 20 且 $b 大于 100 的时候返回 true

-o:或,[ $a -lt 20 -o $b -gt 100 ] ,$a 小于 20 或 $b 大于 100 的时候返回 true

!:非,[ ! false ] 返回 true

字符串比较

=:[ $a = $b ],判断 $a 与 $b 是否相等,注意不是 "=="

!=:[ $a != $b ],判断 $a 与 $b 是否不想等

-z:判断字符串长度是否为0,[ -z $a ],如果 $a 长度为0返回 true

-n:判断字符串长度是否不为0,[ -n $a ],如果 $a 长度不为0返回 true

str:[ $a ],字符串里面如果全是空格,会返回 false,"     " => false,获取字符串长度的方法:${#str}

暂时不知道 -z 和 -n 的具体用法,上面的 -z 和 -n,在字符串长度不为 0 的时候 -z 也返回了 true。

 文件相关判断符

-b:判断文件是不是 block special 文件,硬盘分区是 block special 文件,如:[ -b /dev/disk1s1 ] 会返回 true。

-c:判断文件是不是 character special 文件,[ -c $file ]

-d:判断是不是 目录

-f:判断是不是普通文件,而不是目录或特殊文件

-g:判断文件是否设置了 SGID(Set GID)

-k:判断文件是否设置了 SBIT(Sticky Bit)

-p:判断文件是否是命名管道

-t:判断文件描述符是否是打开状态并且关联了终端

-u:判断文件是否设置了 SUID(Set User ID)

-r:判断文件是否可读

-w:判断文件是否可写

-x:判断文件是否可执行

-s:判断文件的大小是否大于 0

-e:判断文件是否存在

猜你喜欢

转载自www.cnblogs.com/eleven24/p/9219341.html