条件测试和if语句用法

一、条件测试

1、test命令

测试表达式是否成立,若不成立返回0,否则返回其他的数值

格式1:test 条件表达式
格式2[条件表达式]

2、文件测试

[操作符  文件或目录]

常用的测试操作符

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

基本用法

[root@localhost ~]# test -d yanzheng      #-d表示是否为目录,可以看出yanzheng是目录
[root@localhost ~]# echo $?
0     #所以返回0表示条件成立
[root@localhost ~]# test -d lan.sh      #lan.sh是个脚本文件,不是目录,返回1表示条件不成立
[root@localhost ~]# echo $?
1
[root@localhost ~]# [ -d yanzheng ]      #这是第二种表达方式
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ -f yanzheng ]    #test条件表达式  文件或目录。[条件表达式  文件或目录]
[root@localhost ~]# echo $?
127
[root@localhost ~]# [ -f lan.sh ] && echo 'yes'   #&&表示并且的意思,具有判断能力
yes                                               #&&前面的条件满足输出,&&后面的命令,若不满足,则不输出

3、整数值比较

[整数1   操作数  整数2]

常用的测试操作符

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

4、字符串比较

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

基本用法

[root@localhost ~]# echo $LANG    #查看当前语言和字符集
zh_CN.UTF-8
[root@localhost ~]# [ $LANG = zh_CN.UTF-8 ] && echo 'yes'    #如果=成立,则输出yes
yes
[root@localhost ~]# [ $LANG != zh_CN.UTF-8 ] && echo 'yes'    #不成立则不输出
[root@localhost ~]# [ $LANG != zh_CN.UTF-8 ] && echo 'yes' || echo 'no'  
no                                       #||表示上一条执行失败后,才执行下一条命令!=没有成立,所以不输出yes,输出yes命令执行失败,执行输出no

5、逻辑测试

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

常用的测试操作符

-a或&&        表示逻辑与而且的意思
-o或 ||       表示或,或者的意思
!               逻辑否

二、if语句的结构

1、单分支结构

if    条件测试操作       if已用磁盘>80%
then   命令序列           then报警
fi

在这里插入图片描述
创建新的目录的脚本步骤
在这里插入图片描述

2、双分支结构

判断目标主机是否存活,显示检验结果

if   条件测试操作     // 80端口是否在监听
   then
   命令序列 1         // 网站服务已在运行
   else
   命令序列 2          启动服务
   fi       

在这里插入图片描述

3、多分支结构

if  条件测试操作
   then
   命令序列 1
   elif
   条件测试操作 2
     then
     命令序列 2
     else
     命令序列 3
     fi

在这里插入图片描述
基本用法

[root@localhost ~]# vim lan.sh  //打开一个lan.sh进行脚本编辑
#!/bin/bash    //声明解释器
read -p "分数成绩:" fen   
   if [ $fen -ge 85 ]; then   //运用多分支结构 进行将成绩分数分类
          echo  "成绩优秀"
elif [ $fen -ge 70 -a $fen -le 84 ];then
     echo "成绩良好"
elif [ $fen -ge 60 -a $fen -le 69 ];then
    echo "成绩合格"
elif [ $fen -lt 60 ];then
   echo "成绩不合格"
fi
[root@localhost ~]# bash lan.sh    //通过bash来将lan.sh进行运行
分数成绩:20
成绩不合格
[root@localhost ~]# bash lan.sh
分数成绩:90     //查看的分数在哪个阶段下面
成绩优秀

三、case语句的结构

case多分支结构
case  变量值 in
模式一)
      命令序列
;;
 模式二)
      命令序列
;;
模式三)
     命令序列
;;
......
*)
     默认命令序列
esac                 
case语句注意事项

①case行首必须以单词“in”,每一模式必须以单个右括号“)”结束
②双分号“;;”表示命令序列的结束
③模式字符串中,可以用方括号表示一个连续的范围,如“[0-9]”;还可以使用管道符表示或,比如a|b
④最后的*)表示默认模式,其中的*相当于通配符
基本用法

[root@localhost ~]# vim  week.sh  
#!/bin/bash    //声明解释器
read -p "请输入月份:" month   //将输入月份来判断是哪个季度
case $month in
[1-3])    //1-3 表示的是第一个季度
echo "这是第一个季度";;
[4-6])
echo "这是第二个季度";;
[7-9])
echo "这是第三个季度";;
1[0-2])
echo "这是第四个季度";;
*)
echo "输入错误";;
esac
[root@localhost ~]# bash week.sh   //执行该文件
请输入月份:1    //输入1 表示查看1月份是在哪个季度上面
这是第一个季度
[root@localhost ~]# bash week.sh
请输入月份:4
这是第二个季度
[root@localhost ~]# bash week.sh
请输入月份:7
这是第三个季度
[root@localhost ~]# bash week.sh
请输入月份:10
这是第四个季度

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值