网站首页 > 技术文章 正文
公众号:老油条IT记
#前言:在生产工作中if条件语句是最常使用的,如使用来判断服务状态,监控服务器的CPU,内存,磁盘等操作,所以我们需要熟悉和掌握if条件语句。
简介
if条件语句,简单来说就是:如果,那么。有if单分支结构,双分支结构,多分支结构
1.单分支结构
#语法结构:
if <条件表达式>
then
指令
fi
或
if <条件表达式>;then
指令
fi
或
if <条件表达式>
then
if <条件表达式>
then
fi
fi
#简单记忆法:
如果 <你给我足够多的钱>
那么
我就给你干活
果如
#说明:<条件表达式> 可以是test、[]、[[]]、(())等条件表达式,每一个if条件语句都是以if开头,并带有then,最后以fi结尾
#例子:
[root@shell scripts]# cat if.sh
#!/bin/bash
if [ -f /etc/hosts ]
then
echo "[guoke1]"
fi
if [[ -f /etc/hosts ]];then
echo "[[guoke2]]"
fi
if test -f /etc/hosts
then
echo "guoke3"
fi
#说明:上面都是判断/etc/hosts是否是文件并是否存在,如果是文件并且存在就打印相关的命令
#执行效果:
[root@shell scripts]# sh if.sh
[guoke1]
[[guoke2]]
guoke3
#说明:因为/etc/hosts是一个文件并且存在,所以输出后面的相关命令
2.双分支结构:加一个else否则
#if单分支结构主体是:如果....那么....。而双分支结构就是:如果....那么.....否则
#语法结构
if <条件表达式>
then
命令集1
else
命令集2
fi
#简单记忆
如果 <你给我足够多的钱>
那么
我就给你干活
否则
我再考虑一下
果如
#例子:
[root@shell scripts]# cat if1.sh
#!/bin/bash
if [ -f /etc/hosts ]
then
echo "is file"
else
echo "no file"
fi
if [ -f /etc/test ]
then
echo "is file"
else
echo "no file"
fi
#执行效果
[root@shell scripts]# sh if1.sh
is file
no file
#说明:因为/etc/test这个文件不存在,所以输出no file
3.多分支结构
#多分支的主体为,"如果.....,那么.....,或者如果......,那么,否则....."
#语法结构
if <条件表达式1>
then
指令集1
elif <条件表达式2>
then
指令集2
else
指令集3
fi
#写多个elif
if <条件表达式1>
then
指令集1
elif <条件表达式2>
then
指令集2
elif <条件表达式3>
then
指令集3
else
指令集4
fi
#提示:如果加elif,那么就要加then,每个elif都要带有then,最后结尾的else后面没有then
#简单记忆
如果 <你有房>
那么
我就嫁给你
或者如果 <你家里有钱>
那么
我也可以嫁给你
或者如果 <你很努力很吃苦>
那么
我们可以先谈谈男女朋友
否则
我们没戏
果如
#简单例子:
[root@shell scripts]# cat if2.sh
#!/bin/bash
if [ $1 -eq 1 ]
then
echo "input 1 success"
elif [ $1 -eq 2 ]
then
echo "input 2 success "
elif [ $1 -eq 3 ]
then
echo "input 3 success"
else
echo "input failure"
fi
#说明:如果传入的第一个参数为1就输出相关命令,或者有如果传入的第一个参数为2,就输出相关命令,后面同理,最后是否则又输出什么
#执行效果
[root@shell scripts]# sh if2.sh 1
input 1 success
[root@shell scripts]# sh if2.sh 2
input 2 success
[root@shell scripts]# sh if2.sh 3
input 3 success
[root@shell scripts]# sh if2.sh 4
input failure
4.if条件语句的使用案例
4.1.检查软件包是否安装
#检查sysstat包是否安装
[root@shell scripts]# cat soft_package.sh
#!/bin/bash
if rpm -q sysstat &>/dev/null
then
echo "sysstat is already installed."
else
echo "sysstat is not installed."
fi
#说明:使用if判断sysstat包有没有安装,如果安装了就打印already installed已经安装,如果没有安装就打印not installed没有安装
#执行效果
[root@shell scripts]# sh soft_package.sh
sysstat is already installed.
#检查mailx包是否安装
[root@shell scripts]# cat soft_package.sh
#!/bin/bash
if rpm -q mailx &>/dev/null;then
echo "mailx is already installed."
else
echo "mailx is not installed."
fi
#说明:使用if判断mailx包有没有安装,如果安装了就打印already installed已经安装,如果没有安装就打印not installed没有安装
#执行效果
[root@shell scripts]# sh soft_package.sh
mailx is not installed.
4.2.监控httpd服务
#提示:使用netstat或ss过滤然后使用wc统计,进行判断,如果结果大于0,就表示运行,否则就发邮件报警然后启动服务
[root@shell scripts]# cat web.sh
#!/bin/bash
if [ `netstat -untpl | grep httpd | wc -l` -gt 0 ];then
echo "httpd is Running"
else
echo "httpd service down" | mail -s "httpd" 1075792988@qq.com
systemctl restart httpd
fi
4.3.监控mysql服务
[root@shell scripts]# cat mysql_mon.sh
#!/bin/bash
if [ `netstat -untpl | grep mysqld | wc -l` -gt 0 ];then
echo "mysqld is Running"
else
echo "mysqld service down" | mail -s "mysqld" 1075@qq.com
systemctl restart mysqld
fi
#然后将写的监控脚本放进定时任务里面,多久运行一次检查
#例如:每3分钟执行一遍
*/3 * * * * root /bin/sh /scripts/web.sh &>/dev/null
*/3 * * * * root /bin/sh /scripts/mysql_mon.sh &>/dev/null
#提示:对于开发程序脚本来说,我们一般是先要明白开发需求,然后进行分析,设计思路,然后再编写代码
#例如:监控系统剩余内存的大小,如果小于200M,就邮件报警,每3分钟执行一次
思路:
1.先在命令行获取到系统剩余的内存的值
2.配置邮件报警功能
3.进行判断,如果取到的值小于200M,就报警
4.编写shell脚本
5.加入crond定时任务,然后每3分钟检查一次
#总结:if条件语句可以做的事情还有很多,大家可以根据工作需求去多多开发挖掘。
#关注老油条IT记,带你遨游IT世界
猜你喜欢
- 2025-06-30 记录一次彻底清除挖矿病毒(挖矿 清退)
- 2025-06-30 linux计划任务管理(linux计划任务设置)
- 2025-06-30 Linux基本命令—修改命令别名(linux永久修改别名)
- 2025-06-30 CentOS nodejs环境配置(centos nodejs安装)
- 2025-06-30 如何在Shell中使用加密密码 ?Linux 进阶收藏!
- 2025-06-30 为 RabbitMQ 服务器启用 SSL/TLS(rabbitmq服务启动几秒停止)
- 2025-06-30 从Git远程仓库单独拉取指定目录或文件
- 2025-06-30 Shell脚本关于循环的一些总结(shell 脚本 循环)
- 2025-06-30 Elasticsearch 的用户名和密码设置
- 2025-06-30 苹果为 OS X 发布 bash 更新:修复 Shellshock 漏洞
- 1506℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 493℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 484℃MySQL service启动脚本浅析(r12笔记第59天)
- 462℃启用MySQL查询缓存(mysql8.0查询缓存)
- 458℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 442℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 421℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 418℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)