1 判断一个条件是为真(true)还是为假(false)
- 格式1: ==test== 条件表达式
- 格式2: [ 条件表达式 ]
- 格式3: [[ 条件表达式 ]] 支持正则 =~
2 与文件相关的常用参数
-e 判断文件是否存在
-f 判断是否为普通文件
-d 判断是否为目录
-s 判断文件是否存在并且为非空文件
3 与文件权限相关的判断
-r -w -x 是否具体对其具有可读可写可执行权限
4 两文件之间的比较判断
file1 -nt file2 比较file1是否比file2新
file1 -ot file2 比较file1是否比file2旧书
file1 -ef file2 是否为同一个文件
5 整数之间的判断
-eq 相等
-ne 不等
-gt 大于
-lt 小于
-ge 大于或等于
-le 小于或等于
6 字符串之间判断
-z 判断是否为空字符,字符串长度为0则条件为真
-n 是否为非空字符串,如果字符串为非空条件为真
= 字符串直接用用= 即可
!= 两个字符串是否不等
7 多重条件判断
条件1 -a 条件2 (and) 条件1 && 条件2 两个条件同时满足,整个大条件为真
条件1 -o 条件2 (or) 条件1 || 条件2 两个条件满足任意一个,整个大条件为真
8 &&与||符号实现判断语句
; 不管前面执行是否正确,都会执行后面
&& 前面执行正确,才会执行后面
|| 前面执行失败,才会执行后面
#示例语法格式
test -e /etc/fstab 判断文件是否存在
[ -d /etc ] 判断目录是否存在,存在条件为真 (中括号里面左边两边有空格)
[ ! -d /etc ] 判断目录是否存在,不存在条件为真 (中括号里面左边两边有空格)
[[ -f /etc/fstab ]] 判断文件是否存在,并且是普通文件 (中括号里面左边两边有空格)
#示例
# test -e /etc/fstab
# echo $?
0 返回值为0表示判断的文件存在
# test -e /etc/sdfsfsf
# echo $?
1 返回值为非0表示判断的文件不存在
#示例
# aaa=aaa123
# [[ $aaa =~ ^aaa ]]
# echo $?
0 返回值为0表示上面判断的aaa变量是以aaa开头
# [[ $aaa =~ ^bbb ]]
# echo $?
1 返回值为非0表示上面判断的aaa变量不是以bbb开头
#示例
[ 1 -eq 1 -a 1 -ne 0 ] 整个表达式为真
[ 1 -eq 1 ] && [ 1 -ne 0 ]
[ 1 -eq 1 -o 1 -ne 1 ] 整个表达式为真
[ 1 -eq 1 ] || [ 1 -ne 1 ]
# [ 1 -eq 1 -a 0 -ne 0 -o 1 -eq 0 ]
# echo $?
1
#示例
条件 && 动作 # 前面条件满足则执行动作
条件 || 动作 # 前面条件失败则执行动作
条件 && 动作1 || 动作2 # 如果条件满足,则执行动作1,否则则执行动作2
#示例
# [ -e /etc/fstab ] && echo "文件存在" || echo "文件不存在"
文件存在
# [ -e /etc/sdfdsfdsa ] && echo "文件存在" || echo "文件不存在"
文件不存在
#示例
#!/bin/bash
read -p "输入你的性别(man/woman):" sex
[ $sex != man -a $sex != woman ] && echo "性别输入有误"
#示例
#!/bin/bash
read -p "输入你的性别:(man/woman)" sex
[ $sex != man -a $sex != woman ] && echo "性别输入有误" && exit
[ $sex = man ] && echo "帅哥" || echo "美女"
说明: exit会退出脚本
#if单分支结构
if [ 条件 ];then
命令
fi
[ 条件 ] && 命令
#if双分支结构
if [ 条件 ];then
命令1
else
命令2
fi
[ 条件 ] && 命令1 || 命令2
#if多分支结构
if [ 条件1 ];then
命令1
elif [ 条件2 ];then # 可以有多个elif
命令2
else
命令3
fi
如果条件1满足,执行命令1后结束;
如果条件1不满足,再看条件2,如果条件2满足执行命令2后结束;
如果条件1和条件2都不满足执行命令3结束.
#示例多分支代码
#!/bin/bash
read -p "输入你的性别(man/woman):" sex
if [ $sex = man ];then
echo "帅哥"
elif [ $sex = woman ];then
echo "美女"
elif [ $sex = boy ];then
echo "小帅哥"
elif [ $sex = girl ];then
echo "小美女"
else
echo "性别输入有误"
fi