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