一、条件判断
1.语法格式
格式1:test 条件表达式
格式2:[ 条件表达式 ]
格式3:[[ 条件表达式 ]] 支持正则~
说明:man test 去查看,很多的参数都用来进行条件判断
2.条件判断相关参数
与文件存在与否的判断
bash
-e 是否存在 不管是文件还是目录,只要存在,条件就成立
-f 是否为普通文件
-d 是否为目录
-S socket
-p pipe
-c character
-b block
-L 软link
三种语法格式:
test -e file 只要文件存在条件为真
[ -d /shell01/dir1 ] 判断目录是否存在,存在条件为真
[ ! -d /shell01/dir1 ] 判断目录是否存在,不存在条件为真
[[ -f /shell01/1.sh ]] 判断文件是否存在,并且是一个普通的文件
-s 判断文件是否有内容(大小),非空文件条件满足
说明:-s表示非空,! -s 表示空文件
说明:1.sh文件里文件
bash
文件权限相关的判断
-r 当前用户对其是否可读
-w 当前用户对其是否可写
-x 当前用户对其是否可执行
-u 是否有suid
-g 是否sgid
-k 是否有t位
两个文件的比较判断
file1 -nt file2 比较file1是否比file2新
file1 -ot file2 比较file1是否比file2旧
file1 -ef file2 比较是否为同一个文件,或者用于判断硬链接。是否指向同一个inode
test file1 -nt file2
[ file1 -ot file2 ]
整数判断(重要)
bash
整数之间的判断
-eq 相等
-ne 不等
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于
字符串判断(重要)
bash
-z 是否为空字符串 字符串长度为0,就成立
-n 是否为非空字符串 只要字符串非空,就是成立
string1 = string2 是否相等
string1 != string2 不等
多重条件判断
逻辑与 : -a 或者&&
1 -eq 1 -a 1-ne 1\] 或者\[ 1 -eq 1 \] \&\& \[ 1 -ne 1
逻辑或: -o 或者||
1 -eq 1 -o 1-ne 1\] 或者\[ 1 -eq 1 \] \|\| \[ 1 -ne 1
总结:
1.; && ||这三个都可以用来分割命令
2.;完全不考虑前面的语句是否正确执行,都会执行;号后面的内容
3.&&需要考虑&&前面的语句的正确性,前面语句正确执行才会执行&&后的内容;反之亦然
make && make install
4.|| 需要考虑||前面的语句的非正确性,前面语句执行错误才会执行||后面的内容;反之亦然
5.如果&&和||一起出现,从左往右依次看,按照以上原则
二、流程控制语句
1.基本语法结构
F:false 假
T:true 真
bash
if [ condition ];then
command
command
fi
[ 条件 ] && command
bash
if [ condition ];then
command1
else
command2
fi
[ 条件 ] && command1 || command2
bash
if [ condition1 ];then
command1 结束
elif [condition2 ];then
command2 结束
else
command3
fi
注释:如果条件1满足,执行命令1结束;如果条件1不满足,再看条件2,如果条件2满足执行命令2后结束;如果条件1和条件2都不满足执行命令3结束。