一、三种方式
1. test 条件表达式
2. [条件表达式]
3. [[条件表达式]]支持正则
注意 :[ ] 和 [[ ]] 括号左右两边需要留空格
二、常用判断条件
-e #判断文件是否存在(任何类型文件) [ -e ./app ]; echo $?
-f #判断文件是否存在并且是一个普通文件 [ -f ./stu ]; echo $?
-d #判断文件是否存在并且是一个目录 [ -d ./app ]; echo $?
-L #判断文件是否存在并且是一个软连接文件 [ -L ./test ]; echo $?
-b #判断文件是否存在并且是一个设备文件
-S #判断文件是否存在并且是一个套接字文件
-c #判断文件是否存在并且是一个字符设备文件
-p #判断文件是否存在并且是一个命名管道文件
-r #当前用户对其是否可读 [ -r ./frist_text.sh ]; echo $?
-w #当前用户是否可写
-x #当前用户对其是否可执行
-u #是否有suid 高级权限冒险位
-g #是否sgid,高级权限强制位
-k #是否有T位,高级权限粘滞位
判断文件新旧
file1 -nt file2 #比较file是否file2新 test stu -nt stu2; echo $?
file1 -ot file2 #比较file1是否比file2旧 test stu -nt stu2; echo $?
file1 -ef file2 #比较是否为同一个文件,或者用于判断硬连接,是否指向同一个inode
-eq #相等 [ 1 -eq 2 ];echo $?
-ne #不等
-gt #大于
-lt #小于
-ge #大于等于
-le #小于等于
-z 判断是否为空字符,字符串长度为0则成立 [ -z "" ];echo $?
-n 判断是否为非空字符串,字符串长度不为0则成立 [ -z "aaa" ];echo $?
string1 = string2 判断字符串是否相等
string1 != string2 判断字符串是否不相等
-a 和 && 逻辑与 (全真为真,有假就假)
-o 和 || 逻辑或 (全假才假,有真必真)
a&&b:a和b同时为true 才返回 true, 否则返回false;
a || b:a或b任意一个为true 就返回true , 否则返回false