判断语句
使用test来进行判断
1 2 3 4 5 6 7 8 9
| # test [选项] 文件 test -d /Users/zhanghe/desktop/user/shell ---------------------
示例: #如果该文件是目录则输出yes,否则输出no test -d /Users/zhanghe/desktop/user/shell && echo yes || echo no
|
选项
按照文件类型判断
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| -d 判断文件是否存在,且为目录 -e 判断文件是否存在 -f 判断文件是否存在,且为普通文件 -s 判断文件是否存在,并且是否为非空文件 -b 判断文件是否为块设备文件 -c 判断文件是否为字符设备文件 -g 判断文件是否设置setgid位 -h 判断文件是否是符号链接 -L 判断文件是否为符号链接 -p 判断文件是否为管道文件 -u 判断文件是否设置setuid位
#示例 test -s stu.txt
|
按照权限判断
1 2 3 4 5 6
| -r 判断文件是否存在,且是否有读权限 -w 判断文件是否存在,且是否有写权限 -x 判断文件是否存在,且是否有执行权限
#示例 test -w stu.txt
|
数值比较
1 2 3 4 5 6 7 8 9
| -eq 等于 -ne 不等于 -gt 大于 -lt 小于 -ge 大于等于 -le 小于等于
#示例 test 1 -eq 2
|
字符串比较
1 2 3 4 5 6 7
| -z 判断字符串是否为空 -n 判断字符串是否非空 == 判断两个字符串是否相等 != 判断两个字符串是否不等
#示例 test "aa" == "ab"
|
逻辑判断
1 2 3 4 5 6
| -a 逻辑与 -o 逻辑或 ! 逻辑非
#示例 test "aa" == "aa" -a "ab" == "aa"
|
上述的test可以使用[ ]来替代
如:
[ -s stu.txt ]
[ “aa” == “ab” ]
还有一种[[ 条件 ]]也可以进行条件判断,对于test和[]如果表达式包含特殊字符的话,需要进行转义,而对于[[ 条件 ]]则不需要理会特殊字符的影响,但是注意[[的后面和]]的前面都至少有一个以上的空格符才行
字符串包含
可以看到上述提供的只是基础的判断,那字符串包含如何进行判断呢
使用grep
1 2 3
| if [[ -n `echo "abcd" | grep "ab"` ]] then echo "包含" fi
|
使用通配符
1 2 3
| if [[ "abcd" == *ab* ]] then echo "包含" fi
|