bash脚本条件测试

一、             算术运算符:

算术运算符列表

运算符

说明

举例

+

加法

`expr $a + $b`

-

减法

`expr $a - $b`

*

乘法

`expr $a \* $b`。

/

除法

`expr $b / $a`

%

取余

`expr $b % $a`

=

赋值

a=$b 将把变量 b 的值赋给 a。

二、             数值测试

运算符

示例

说明

备注

-gt

[ $a –gt $b ]

A是否大于b,如大于,返回0

gt=greater than

-ge

[ $a –ge $b ]

A是否大于等于b,如大于等于,返回0

ge=greater equal

-eq

[ $a –eq $b ]

A是否等于b,如等于,返回0

eq=equal

-ne

[ $a –ne $b ]

A是否不等于b,如不等于,返回0

ne=not equal

-lt

[ $a –lt $b ]

a是否小于b,如小于,返回0

lt=less than

-le

[ $a –le $b ]

a是否小于等于b,如小于等于b,返回0

le=less equal

三、             字符测试

运算符

说明

举例

==

检测两个字符串是否相等,相等返回0。

[ $a == $b ]

检测左边的字符串是否大于右边的字符串

[ $a \> $b ]

检测左边的字符串是否小于右边的字符串

[ $a \< $b ]

!=

检测两个字符串是否不相等,不相等则返回0

[ $a != $b ]

-z

检测字符串是否为空,为空返回0

[ -z $a ]

-n

检测字符串是否不空,不空返回0。

[ -n $a ]

=~

检测左边的字符串是否能被右边的模式匹配

[ abc =~ a* ]

注:字符串测试的表达式一 般用在[[ ]]模式下,比较大小时需转义,否则会被识别为输出重定向。

 

 

四、             文件测试

操作符

说明

示例

文件存在性测试

-a   FILE

检测文件是否存在(不常用)

[   -a /etc/passwd ]

-e   FILE

检测文件是否存在

[   -e /etc/passwd ]

文件存在性及类别测试

-b   FILE

检测文件是否为块设备文件并存在

[   -b /dev/sda ]

-c   FILE

检测文件是否为字符设备文件并存在


-d   FILE

检测文件是否为目录文件并存在


-f   FILE

检测文件是否为普通文件并存在


-h   FILE或

-L   FILE

检测文件是否为符号链接文件并存在


-p   FILE

检测文件是否为管道文件且存在


-S   FILE

检测文件是否为套接字文件且存在


文件权限存在

-r   FILE

检测文件是否为可读且存在


-w   FILE

检测文件是否可写且存在


-x   FILE

检测文件是否可执行且存在


文件特殊权限测试

-g   FILE

测试文件是否有SGID权限且存在


-u   FILE

测试文件是否有SUDI权限且存在


-k   FILE

测试文件是否有sticky权限且存在


文件大小测试

-s   FILE

测试文件是否为空且存在


文件是否打开测试

-t   fd:FILE

测试文件描述符是否被打开且与某终端相关


-N   FILE

文件自上一次被读取后是否被修改过


-O   FILE

当前有效用户是否为文件属主


-G   FILE

当前有效用户是否为文件属组


双目测试

File1   <ef file2

File1与file2是否指向同一设备上相同的inode


File1   –nt file2

File1是否比file2的mtime新,是为真


File1   –ot file2

File1的mtime是否比file2的旧,是为真


五、             组合测试条件

第一种方式:

运算类型

说明

Command1   && command2

Command1和command2同时为真则为真

Command1   || command2

Command1和command2一个为真则为真

!command

Command取反

第二种方式:

Expression1 –a expression2             expression1和expression2同时为真则为真

Expression1 –o expression2             expression1和expression2一个为真则为真

!expression                                           !expression取反

注:此方式必须使用test命令或[]进行测试


相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...