1:条件判断语法格式
格式1:test条件表达式
格式2:[ 条件表达式 ]
格式3:[[ 条件表达式 ]] 支持正则 =
注释:通过 man test 查看test表达式的条件判断
2:判断文件类型 (以下是常用)
-e 判断文件是否存在
-f 判断文件是否存在并且是个普通的文件
-d 判断文件是否存在并且是个目录
-L 判断文件是否存在并且是个软连接
-b 判断文件是否存在并且是个设备文件
-S 判断文件是否存在并且是个套接字文件
-c 判断文件是否存在并且是字符设备文件
-p 判断文件是否存在并且是命名管道文件
-s 判断文件是否存在并且是个非空文件(有内容)
2:判断文件权限 (以下是常用)
-r 当前用户是否可读
-w 当前用户对其是否可写
-x 当前用户对其是否可执行
-u 是否有suid 高级权限冒险位
-g 是否sgid 高级权限强制位
-k 是否有t位 高级权限粘滞位 控制删除的
3:判断文件的新旧
file1 -nt file2 比较file1是否比file2新
file1 -ot file2 比较file1是否比file2旧
file1 -ef file2 比较是否为同一个文件 或者用于判断硬连接 是否指向同一个inode 节点
4:判断整数
-eq 相等
-ne 不等
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于
5:判读字符串
-z 判断是否为空字符串 字符串长度为0则成立
-n 判断是否为非空字符串 字符串长度不为0则成立
str1 = str2 判断字符串是否相等
str1 != str2 判断字符串是否不等
6:多重panduan
-a 和 && 都是 逻辑与
使用 -a [ 1 -eq 1 -a 1 -ne 0 ]
使用 && [ 1 -eq 1 ] && [ 1 -ne 0]
综合实战:
例题1:1:在 /home/shell 文件目录中传教一个 test04 文件目录,
2:在test04目录中 创建 test1.txt 和test2.txt 文件 将二个文件中
3:写入 我是测试test1.txt 和 我是test2.txt
4:在/home/shell 目录中创建 test04.sh
5:编写脚本内容如下:
5.1:输出 test04文件是否存在,
5.2:输出test04 文件存在并且是个目录
5.3:判断test04/test1.txt 是否存在
5.4:判断test04/test2.txt 是否是有内容
5.5:当前用户是否有可执行test04.sh的权限
5.6:比较text1.txt和test2.txt 新旧
5.6:定义2个变量 str1="hellworld" 和str2="hellowold"
判断str1和str2 是否相等
以上脚本内容如下:
#!/bin/env bash # Author:lvdqiang # Desc:测试文件判断 # Using:执行命令1:chmod +x /home/shell/test04.sh # 执行命令2:/home/shell/test04.sh # 判断文件是否存在 echo "-----------判断test04文件是否存在----------" test -e /home/shell/test04 A=$(echo $?) if [ $A -eq 0 ] then echo "存在" else echo "不存在" fi echo "-----------判断test04是否存在并且是个目录----------" test -d /home/shell/test04 B=$(echo $?) if [ $B -eq 0 ] then echo "是目录" else echo "不是目录" fi echo "-----------判断test04/test1.txt是否存在----------" test -f /home/shell/test04/test1.txt C=$(echo $?) if [ $C -eq 0 ] then echo "是存在" else echo "不存在" fi echo "-----------判断test04/test1.txt是否存在内容----------" test -s /home/shell/test04/test1.txt C=$(echo $?) if [ $C -eq 0 ] then echo "是存在" else echo "不存在" fi echo "-----------判断test04/test2.txt是否存在内容----------" test -s /home/shell/test04/test2.txt C=$(echo $?) if [ $C -eq 0 ] then echo "是存在" else echo "不存在" fi echo "-----------判断test04.sh是否有执行权限----------" test -x /home/shell/test04.sh C=$(echo $?) if [ $C -eq 0 ] then echo "是存在" else echo "不存在" fi echo "-----------判断test1.txt是否比test2.txt新----------" test /home/shell/test04/test1.txt -nt /home/shell/test04/test2.txt C=$(echo $?) if [ $C -eq 0 ] then echo "新" else echo "不新" fi str1="hellworld" str2="helloworld" echo "-----------str1="hellworld" 和str2="hellowold" 判断str1和str2 是否相等----------" test str1 = str2 C=$(echo $?) if [ $C -eq 0 ] then echo "相等" else echo "不相等" fi
以上执行结果如下图: