条件测试与比较
[[]]、[]、test、(())
条件测试方法
条件测试语法 | 说明 |
语法1:test <测试表达式> |
这是利用test命令进行条件测试表达式的方法。test命令和 "<测试表达式>"之间至少有一个空格 |
语法2:[ <测试表达式> ] |
这是通过[]进行条件测试表达式的方法。和test命令用法相同,推荐此方法。 []的边界和内容至少有一个空格 |
语法3:[[ <测试表达式> ] ] |
这是通过[[ ]]进行条件测试表达式的方法。 [[]]的边界和内容至少有一个空格 |
语法4: ((<测试表达式> )) |
这是通过(())进行条件测试表达式的方法,一般用于if语句里。 (())前端不需要空格 |
文件测试表达式
常用文件测试操作符 | 说明 |
-d 文件,directory | 文件存在且为目录为真,即测试表达试成立 |
-f 文件,file | 文件存在且为普通文件则为真 |
-e 文件,exist | 文件存在则为真,-f,-e不辨别是目录还是文件 |
-r 文件,read | 文件存在且可读则为真 |
-s文件,size | 文件存在且文件大小不为0为真 |
-w文件,write | 文件存在且可写则为真 |
-x文件 ,executable | 文件存在且可执行则为真 |
-L 文件,link | 文件存在且为链接文件则为真 |
f1 -nt f2,nt为newer than | 文件1比文件2新则为真 |
f1 -ot f2,ot为older than | 文件1比文件2旧则为真 |
字符串测试操作符
常用字符串测试操作符 | 说明 |
-n "字符串" | 若字符串的长度不为0,则为真,n可理解为no zero |
-z "字符串" | 若字符串的长度为0,则为真 |
"串1"="串2" | 若字符串1等于字符串2,则为真 |
"串1"!="串2" | 若字符串1不等于字符串2,则为真 |
“=”两边需要有空格
整数二元比较操作符
[]及test使用的比较符号 | (())和[[]]使用的比较符号 | 说明 |
-eq | ==或= | 相等,equal |
-ne | != | 不相等,not equal |
-gt | > | 大于,greater than |
-ge | >= | 大于等于,greater equal |
-lt | < | 小于,less than |
-le | <= | 小于等于,less equal |
逻辑操作符
[]及test使用的比较符号 | (())和[[]]使用的比较符号 | 说明 |
-a | && | and,与,两端都为真,结果为真 |
-o | || | or,或,两端有一个为真,结果为真 |
! | ! | not,非,两端相反,结果为真 |