条件判断:
两种判断格式
test 选项 表达式 或 [ 选项 表达式]
例如:test -e /root/install.log 或 [ -e /root/install.log ]
多种判断类型:
1按照文件类型判断
1.1 -b 文件 判断该文件是否存在,并且是否为块设备文件,是则返回真
1.2 -c 文件 判断该文件是否存在,并且是否为字符设备文件,是则返回真
1.3 -d 文件 判断该文件是否存在,并且是否为目录文件,是则返回真
1.4 -e 文件 判断该文件是否存在,存在则返回真
1.5 -f 文件 判断该文件是否存在,并且是否为普通文件,是则返回真
1.6 -L 文件 判断该文件是否存在,并且是否为符号链接文件,是则返回真
1.7 -p 文件 判断该文件是否存在,并且是否为管道文件,是则返回真
1.8 -s 文件 判断该文件是否存在,并且是否为非空,非空则为真
1.9 -S 文件 判断该文件是否存在,并且是否为套接字文件,是则为真
2按照文件权限判断
2.1 -r 文件 判断该文件是否存在,并且是否该文件有读权限,有则为真
2.2 -w 文件 判断该文件是否存在,并且是否该文件有写权限,有则为真
2.3 -x 文件 判断该文件是否存在,并且是否该文件有执行权限,有则为真
2.4 -u 文件 判断该文件是否存在,并且是否该文件有SUID权限,有则为真
2.5 -g 文件 判断该文件是否存在,并且是否该文件有SGID权限,有则为真
2.5 -k 文件 判断该文件是否存在,并且是否该文件有SBIT权限,有则为真
3两个文件之间比较
3.1 文件1 -nt 文件2 判断文件1的修改时间是否比文件2的新,新则为真
3.2 文件1 -ot 文件2 判断文件1的修改时间是否比文件2的旧,旧则为真
3.3 文件1 -ef 文件2 判断文件1是否和文件2的Inode号一致,(用于判断硬链接)
4两个整数之间比较
4.1 整数1 -eq 整数2 判断两个数是否相等,相等则为真
4.2 整数1 -ne 整数2 判断两个数不相等,不相等则为真
4.3 整数1 -gt 整数2 判断整数1是否大于整数2 大于则为真
4.4 整数1 -lt 整数2 判断整数1是否小于整数2 小于则为真
4.5 整数1 -ge 整数2 判断整数1是否大于等于整数2 大于等于则为真
4.6 整数1 -le 整数2 判断整数1是否小于等于整数2 小于等于则为真
5字符串判断
5.1 -z 字符串 判断字符串是否为空,为空则返回真
5.2 -n 字符串 判断字符串是否为非空,非空则为真
5.3 字符串1==字符串2 判断两个字符串是否相等,相等则为真
5.4 字符串1!=字符串2 判断两个字符串是否不相等,不相等则为真
6多重条件判断
6.1 判断1 -a 判断2 逻辑与,判断1和判断2都成立,最终结果才成立
6.2 判断1 -o 判断2 逻辑或,判断1和判断2有一个成立,最终结果就成立
6.3 !判断 逻辑非 在原有判断式的结果上取反
流程控制:
(1)单分支if条件语句
if [条件判断式];then
程序
fi
或者
if [条件判断式]
then
程序
fi
(2)双分支if条件语句
if [条件判断式]
then
条件成立时执行的代码
else
条件不成立时执行的代码
fi
(3)多分支if条件语句
if [条件判断式1]
then
程序1
elif [条件判断式2]
then
程序2
else
程序3
fi
(4)多分支case语句
case $变量名 in
"值1")
执行代码1
;;
"值2")
执行代码2
;;
此处省略好多分支
*)
执行默认代码(当没有分支满足变量时)
;;
esac
(5)for循环
5.1语法1
for 变量名 in 值1 值2 值3 ...
do
要执行的代码
done
5.2语法二
s=0
for (( i=1;i<=100;i=i+1 ))
do
s=$(( $s+$i ))
done
echo $s
(6)while循环(条件不成立时终止循环)
while [判断式]
do
要执行的代码
done
(7)until 循环(条件成立时终止循环)
until [判断式]
do
要执行的代码
done