Shell脚本之条件语句

本章结构

条件测试 文件测试 整数测试 字符串与逻辑测试 if语句 if单分支语句 if双分支语句 if多分支语句 if嵌套语句

一.条件测试

格式1: test  条件表达式

格式2:[ 条件表达式 ]   



二.文件测试





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

[root@localhost ~]# test -d /etc/yum  //测试/etc/yum是否是目录
[root@localhost ~]# echo $?			//上一条命令执行状态0就是正常执行,1就是错误
0
[root@localhost ~]# test -f /etc/yum   //测试/etc/yum是否是文件
[root@localhost ~]# echo $?
1
[root@localhost ~]# test -e /etc/yum  //测试/etc/yum是否存在
[root@localhost ~]# echo $?
0
[root@localhost ~]# 



三.整数测试


-eq:等于(Equal)
-ne:不等于(Not Equal)
-gt:大于(Greater Than)
-lt:小于(Lesser Than)
-le:小于或等于(Lesser or Equal)
-ge:大于或等于(Greater or Equal)

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

四.字符串比较

=:字符串内容相同
!=:字符串内容不同,!表示相反的意思
-z:字符串内容为空

五.逻辑测试

-a或&&:逻辑与、“而且”的意思
-o或||: 逻辑或、“或者”的意思
!:逻辑否

[root@localhost ~]# [ ! -e /opt/abc ]&&mkdir /opt/abc  // /opt/abc这个目录不存在我就创建这个目录
[root@localhost ~]# ls /opt
abc  rh

6.if语句单分支

#!/bin/bash
mulu="/etc/ccc"  
if [ ! -d $mulu ] 
then
        mkdir -p $mulu
fi

7.if双分支语句

#!/bin/bash

ping -c 3 -i 0.2 -W 3 $1 &>/dev/null
if [ $? -eq 0 ]
then
        echo "Host $1 is up "
else
        echo "Host $1 is down "
fi
-C发数据包  ,-0.2每隔两秒发一次  -W 3次回复  所有输出到这个无用的目录中

[root@localhost ~]# ./c.sh
Host  is down 

8.if多分支和嵌套语句

#!/bin/bash
#一场跑步比赛,10秒内进入决赛,进入决赛之后会被分进男子组或女子组
read -p "请输入你的比赛时间" soucre
if [ $soucre -lt 10 ]
 then
 echo "进入决赛"
 read -p "请输入你的性别(男/女) " sex
 if [ $sex = "男" ]
   then
   echo "进入男子组"
 else
   echo "进入女子组"
 fi
else "被淘汰"
fi
~                                                                                        
~