条件测试常用的语法
得出真假概念
1、数值测试
参数 | 说明 |
---|---|
-eq | 等于则为真 |
-ne | 不等于则为真 |
-gt | 大于则为真 |
-ge | 大于等于则为真 |
-lt | 小于则为真 |
-le | 小于等于则为真 |
2、字符串测试
参数 | 说明 |
---|---|
= | 等于则为真 |
!= | 不相等则为真 |
-z 字符串 | 字符串的长度为零则为真 |
-n 字符串 | 字符串的长度不为零则为真 |
3、文件测试
参数 | 说明 |
---|---|
-e | 文件名 如果文件存在则为真 |
-r | 文件名 如果文件存在且可读则为真 |
-w | 文件名 如果文件存在且可写则为真 |
-x | 文件名 如果文件存在且可执行则为真 |
-s | 文件名 如果文件存在且至少有一个字符则为真 |
-d | 文件名 如果文件存在且为目录则为真 |
-f | 文件名 如果文件存在且为普通文件则为真 |
-c | 文件名 如果文件存在且为字符型特殊文件则为真 |
-b | 文件名 如果文件存在且为块特殊文件则为真 |
4、 多重条件判断
-a (and) 两个条件同时成立则为true $$
-o (or) 两个条件任何一个成立则为true ||
! 反向状态
A条件 && B条件 当A成立,并且执行B条件
A条件 || B条件 当A条件不成立的时候,才会执行B条件
5、文件的权限侦测
test命令
test命令评估一个表达式,它的结果是真还是假,如果为真,那么命令状态执行结果就为0,否则不为0,通过$?取值
test -e hello && echo "该文件/目录已存在,不执行该动作" || mkdir hello
中括号[]
注意点:
1、中括号前后必须有空格间隔
2、在条件测试中使用变量,必须添加双引号
3、中括号里使用数字比较符合,需要转义符\
&> /dev/null #将结果输入不存在文件中,即不输出信息
# 如果是普通文件则返回🆗,否则no
[ -f "$filename" ] && echo ok || echo no
总结
在这里插入代码片
# 最常用的就是中括号,搭配 -gt -lt ,如此用法即可
# eg:
[ $a -gt $b ]
表参考
测试表达式符号 | [] | test | [[]] | (()) |
---|---|---|---|---|
边界是否需要空格 | 需要 | 需要 | 需要 | 不需要 |
逻辑操作符 | !、-a、-o | !、-a、-o | !、&&、||、 | !、&&、|| |
整数比较操作符 | -eq、-gt、-lt、-ge、le | -eq、-gt、-lt、-ge、le | -eq、-gt、-lt、-ge、le 或=、>、<、>=、<= | =、>、<、>=、<= |
字符串比较操作符 | =、==、!= | =、==、!= | =、==、!= | =、==、!= |
是否支持通配符匹配 | 不支持 | 不支持 | 支持 | 不支持 |