条件测试

文件测试
整数测试
字符串与逻辑测试

if语句

if单分支语句
if双分支语句
if多分支语句
if嵌套语句

test命令

测试特定的表达式是否成立,当条件成立时,测试语句的返回值为0,否则为其他数值

格式1: test  条件表达式
格式2:[ 条件表达式 ]        //括号内空格

文件测试

[ 操作符 文件或目录 ]       //括号内空格

常用的测试操作符
-d:测试是否为目录(Directory)
-e:测试目录或文件是否存在(Exist)
-f:测试是否为文件(File)
-r:测试当前用户是否有权限读取(Read)
-w:测试当前用户是否有权限写入(Write)
-x:测试当前用户是否有权限执行(eXcute)

[root@localhost ~]# test -d /etc/sysconfig         //判断是否为目录
[root@localhost ~]# echo $?                             //输出结果
0                                      //值为0时条件成立
[root@localhost ~]# test -f /etc/sysconfig          //判断是否为文件
[root@localhost ~]# echo $?
1                                     //值为1时条件不成立
[root@localhost ~]# [ -e /etc/sysconfig ]          //判断是否有权执行
[root@localhost ~]# echo $?
0                                  

整数值比较

[ 整数1 操作符 整数2]

常用的测试操作符
-eq:等于(Equal)
-ne:不等于(Not Equal)
-gt:大于(Greater Than)
-lt:小于(Lesser Than)
-le:小于或等于(Lesser or Equal)
-ge:大于或等于(Greater or Equal)

[root@localhost ~]# [ $(who|wc -l) -le 6 ]&& echo "有点少!"          //统计当前用户量
有点少!

字符串比较

格式1: [ 字符串1 = 字符串2 ]
         [ 字符串1 != 字符串2 ]
格式2: [ -z 字符串]

常用的测试操作符
=:字符串内容相同
!=:字符串内容不同,!表示相反的意思
-z:字符串内容为空

逻辑测试

格式1: [ 表达式1 ] 操作符 [ 表达式2 ]
格式2: 命令1 操作符 命令2  ...

常用的测试操作符
-a或&&:逻辑与、“而且”的意思
-o或||: 逻辑或、“或者”的意思
!:逻辑否

[root@localhost ~]# [ -x /etc ] || [ -w /etc ] &&echo "您可执行!"                //满足一个条件即可
您可执行!              
 [root@localhost ~]# [ -x /etc ] && [ -w /etc ] &&echo "您可以操作!"       //需同时满足两个条件
您可以操作!

if语句

单分支结构

if                          //条件测试操作
    then                  //命令序列
fi                        //结束命令序列判断

Shell编程之条件语句_第1张图片

[root@localhost ~]# vim 111.sh
#!/bin/bash
read -p "请输入一个整数:" num
if [ $num -le 60 ]
 then
  echo "数字太小!"
fi
[root@localhost ~]# chmod +x 111.sh
[root@localhost ~]# ./111.sh
请输入一个整数:55
数字太小!

双分支结构

if                               //条件测试操作
    then                      //命令序列1
    else                    //命令序列2
fi                         //结束命令序列判断

Shell编程之条件语句_第2张图片

[root@localhost ~]# vim 111.sh
#!/bin/bash
read -p "请输入一个整数:" num
if [ $num -le 60 ]
 then
  echo "数字太小!"
else    
  echo "数字太大!"
fi
[root@localhost ~]# ./111.sh
请输入一个整数:55
数字太小!
[root@localhost ~]# ./111.sh
请输入一个整数:88
数字太大!

多分支结构

if                             //条件测试操作1
    then                      //命令序列1
elif                          //条件测试操作2
    then                     //命令序列2
else            
                               //命令序列3
fi                            //结束命令序列判断

Shell编程之条件语句_第3张图片

[root@localhost ~]# vim 111.sh
#!/bin/bash
read -p "请输入您的成绩:" num
if [ $num -le 10 ]
 then
  echo "恭喜您进入决赛!"
   read -p "请输入您的性别(男/女):" sex
    if [ $sex = "男" ]
     then
         echo "恭喜您进入男子组"
  else
         echo "恭喜您进入女子组" 
        fi
else
        echo "很抱歉,您被淘汰了"
fi
[root@localhost ~]# ./111.sh
请输入您的成绩:8
恭喜您进入决赛!
请输入您的性别(男/女):男 
恭喜您进入男子组
[root@localhost ~]# ./111.sh
请输入您的成绩:10
恭喜您进入决赛!
请输入您的性别(男/女):女
恭喜您进入女子组
[root@localhost ~]# ./111.sh
请输入您的成绩:20
很抱歉,您被淘汰了