目录
一. test 测试文件的表达式
1.test语法
test 操作符 文件名
[ ]:
相当于test ,[ ]前后需要加上空格,[ 操作符 文件名 ]
[[ ]]:
加强版的单个[ ]:支持正则表达式和通配符(这里的通配符是匹配字符的)
[[ == str(通配符) ]] [[ =~ str(正则表达式) ]]
测试结果:echo $?,结果为0则为正结果,结果不是0则为负结果。
操作符
-d | 测试是否为目录(Directory) |
-e | 测试目录或文件是否存在(Exist) |
-a | 测试目录或文件是否存在(Exist) |
-f | 测试是否为文件(File) |
-r | 测试当前用户是否有权限读取(Read) |
-w | 测试当前用户是否有权限写入(Write) |
-x | 测试当前用户是否有权限执行(eXcute) |
-L | 测试是否为软连接文件 |
二. 数值&字符串比较
1. 整数数值比较
[ 整数1 操作符 整数2 ]
操作符 | 含义 |
-eq | 等于(equal) |
-ne | 不等于(not equal) |
-gt | 大于(greater than) |
-ge | 大于或等于(greater or equal) |
-lt | 小于(lesser than) |
-le | 小于或等于(lesser or eequal) |
2. 字符串比较
操作符 | 含义 | 格式举例 |
= | 字符串内容相同 | [ 字符串1 = 字符串2 ] 是否相同, [[ 字符串1 == 字符串2 ]] 双括号格式 |
!= | 字符串内容不同,! 号是取反 | [ 字符串1 != 字符串2 ] 是否不相同 |
-z | 字符串内容为空 | [ -z 字符串 ] 是否为空 |
-n | 字符是否存在 | [ -n 字符串 ] 字符是否存在 |
3. 短路与(&&)和短路或(||)
①概念:
短路与
全真才为真,一假即为假。
cmd1 && cmd2 ,cmd1成功执行了才执行cmd2。类似电路串联。
短路或
一真即为真,全假才为假 。
cmd1 || cmd2 ,cmd1成功了就不执行cmd2了。类似电路并联
② 用法实验
ping 的脚本:检测本机是否在线
ping的选项: -c:发送包的个数; -W(大写):超时时间 ;-w(小写):多少秒后停止ping操作; -i:发送的间隔时间
脚本:ping -c 3 -i 0.5 -W2 ${ip}$i &> /dev/null && echo "${ip}$i online" || echo "${ip}$i off"
tips:W是大写,要想检测一个范围的ip地址要做循环。可用for循环等(for循环如何写看《for循环》)