shell之条件测试和if语句

一、条件测试

1.1、文件测试

test命令

test命令:测试特定的表达式是否成立,当条件成立时,测试语句的返回值为0,否则为其他数值
命令基本格式
格式一:test 条件表达式
格式二:[ 条件表达式 ]		'两端要有空格,此法更为常用'

在这里插入图片描述

文件测试基本格式
[ 操作符 文件或目录 ]  '注意两端空格'
&?  返回0表示条件成立,返回非零值表示条件不成立
&&  逻辑与,"而且"的意思
||  逻辑或,"或者"的意思
[root@localhost mnt]# touch abc
[root@localhost mnt]# [ -r abc ] && echo "yes"
yes
[root@localhost mnt]# [ -w abc ] && echo "yes"
[root@localhost mnt]# 
[root@localhost mnt]# [ -w abc ] || echo "yes"
yes

1.2、整数测试

命令基本格式
[ 整数1 操作符 整数2 ]		

常用的测试操作符
在这里插入图片描述

[root@localhost mnt]# [ 5 -gt 3 ] && echo "yes"
yes
[root@localhost mnt]# [ 5 -gt 6 ] && echo "yes"
[root@localhost mnt]# [ 5 -le 6 ] && echo "yes"
yes
[root@localhost mnt]# [ 5 -le 3 ] && echo "yes"
[root@localhost mnt]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1823         692          82           9        1048         908
Swap:          4095           0        4095
[root@localhost mnt]# free -m | grep "Mem" | awk '{print $4}'
82
[root@localhost mnt]# ddd=$(free -m | grep "Mem" | awk '{print $4}')
[root@localhost mnt]# echo $ddd
84
[root@localhost mnt]# [ $(free -m | grep "Mem" | awk '{print $4}') -gt 100 ] && echo "yes"
[root@localhost mnt]# [ $(free -m | grep "Mem" | awk '{print $4}') -gt 80 ] && echo "yes"
yes

1.3、字符串与逻辑测试

常用的格式
格式一:[ 字符串1 = 字符串2 ]
	   [ 字符串1 != 字符串2 ]
格式二:[ -z 字符串 ]

在这里插入图片描述

1.4、逻辑测试

在这里插入图片描述

[root@localhost opt]# [ ! -d /opt/demo ] && echo "yes"
[root@localhost opt]# [ 1 -eq 1 ] && [ 2 -eq 2 ] && echo "yes"
yes

1.5、运算符

  • 一元运算符
    i++和++i 的意义在于前面有没有赋值运算符。
    i++ 就是先赋值再自加,++i 就是先自加再赋值。
    i=–i:先自减在赋值
[root@localhost mnt]# i=1
[root@localhost opt]# echo $i
1
[root@localhost opt]# let i=++i
[root@localhost opt]# echo $i
2
[root@localhost opt]# let i+=2 	'相当于i=i+2'
[root@localhost opt]# echo $i
4
  • 二元运算符
    a+b=c
  • 三元运算符
    条件&&结果1||结果2

二、if 判断语句

2.1、if 单分支语句

单分支结构(基本格式)
if 条件测试操作
	then  命令序列
fi
[root@localhost opt]# vim a.sh

#!/bin/bash
if [ ! -d demo01 ]	'若不存在demo01,则执行下述命令'
 then
        mkdir -p demo01
        echo "demo01创建成功"
fi
[root@localhost opt]# chmod +x a.sh 
[root@localhost opt]# ./a.sh 
demo01创建成功

2.2、if双分支语句

双分支结构(基本格式)
if 条件测试操作
	then  命令序列1
	else  命令序列2
fi
举例:查看目标主机是否存活,显示检测结果
[root@localhost opt]# vim a.sh
#!/bin/bash
read -p "请输入IP地址:" ip
ping -c 3 -i 0.2 -W 3 $ip &> /dev/null
if [ $? -eq 0 ]
        then
                echo "$ip is up"
        else
                echo "$ip is down"
fi
[root@localhost opt]# chmod +x a.sh 
[root@localhost opt]# ./a.sh 
请输入IP地址:192.168.220.130     
192.168.220.130 is down
[root@localhost opt]# ./a.sh 
请输入IP地址:192.168.220.131
192.168.220.131 is up
其中:
-c:发送三个包
-i: 发包间隔0.2秒
-W:等待时间3秒

2.3、if多分支语句

多分支结构(基本格式)
if 条件测试操作1
	then  命令序列1
elif  条件测试操作2
	then  命令序列2
else
	命令序列3
fi
举例:判断分数范围,分数优秀,合格,不合格三挡
[root@localhost opt]# vim b.sh
#!/bin/bash
read -p "请输入成绩:" score
if [ $score -lt 0 ] || [ $score -gt 100 ]
  then
        echo "输入有误"
        exit 1;
elif [ $score -ge 85 ] && [ $score -le 100 ]
  then
        echo "成绩优秀"
elif [ $score -ge 70 ] && [ $score -le 84 ]
  then
        echo "成绩合格"
else
        echo "成绩不合格"
fi

[root@localhost opt]# ./b.sh 
请输入成绩:99
成绩优秀
[root@localhost opt]# ./b.sh 
请输入成绩:84
成绩合格
[root@localhost opt]# ./b.sh 
请输入成绩:53  
成绩不合格
[root@localhost opt]# ./b.sh 
请输入成绩:120
输入有误
[root@localhost opt]# ./b.sh 
请输入成绩:-2
输入有误
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值