bash中的条件判断
一、按照文件类型进行判断,所有判断都是在文件存在的前提下,不存在直接返回假。
-b 文件名:判断是否是块设备文件
-c 文件名:判断是否是字符设备文件
-d 文件名:判断是否是目录文件
-e 文件名:单独的判断文件是否存在
-f 文件名:判断是否是普通文件
-L 文件名:判断是否是符号链接文件
-p 文件名:判断是否是管道文件
-s 文件名:判断是否是非空
-S 文件名:判断是否是套接字文件
常用的是-d、-e、-f和-L。
二、按照文件权限进行判断,所有判断都是在文件存在的前提下,不存在直接返回假,这个判断不能判断所有者、所属组和其他人的权限,就是说这三类里面只要有一个满足了条件就返回真。
-r 文件名:判断文件是否拥有读权限
-w 文件名:判断文件是否拥有写权限
-x 文件名:判断文件是否拥有执行权限
-u 文件名:判断文件是否拥有SUID权限
-g 文件名:判断文件是否拥有SGID权限
-k 文件名:判断文件是否拥有SBit权限
三、文件之间进行比较
文件1 -nt 文件2:判断文件1的修改时间是否比文件2新
文件1 -ot 文件2:判断文件1的修改时间是否比文件2旧
文件1 -ef 文件2:判断文件1是否和文件2的inode号(i节点号)一致,可以理解成两个文件是否是同一个文件(硬链接文件)。
四:两个整数之间比较
整数1 -eq 整数2:判断整数1是否等于整数2
整数1 -ne 整数2:判断整数1是否不等于整数2(不等于为真)
整数1 -gt 整数2:判断整数1是否大于整数2
整数1 -lq 整数2:判断整数1是否小于整数2
整数1 -ge 整数2:判断整数1是否大于等于整数2
整数1 -le 整数2:判断整数1是否小于等于整数2
五、字符串的判断
-z 字符串:判断字符串是否为空(为空返回真)
-n 字符串:判断字符串是否是非空
字符串1 == 字符串2:判断两个字符串是否相等
字符串1 != 字符串2:判断两个字符串是否不想等
六、多重条件判断
判断1 -a 判断2:逻辑与,判断1和判断2都为真,最终结果才为真
判断1 -o 判断2:逻辑或,判断1和判断2至少有一个真,最终结果才为真
!判断:逻辑非,使原始的判断结果取反
语法格式:
1、test -e /etc/passwd
2、 -e /etc/passwd ,流程控制语句中一般都用这种格式
运行完没有任何输出,需要手动再输入echo $?,来返回上一条命令执行是否正确。
连起来的判断一句:
[ -e /etc/passwd ] && echo "yes" || echo "no"