shell脚本中的if条件语句介绍和使用案例
#前言:在生产工作中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 ];then
echo "httpd is Running"
else
echo "httpd service down" | mail -s "httpd" @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 ];then
echo "mysqld is Running"
else
echo "mysqld service down" | mail -s "mysqld" @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分钟执行一次
思路:
.先在命令行获取到系统剩余的内存的值
.配置邮件报警功能
.进行判断,如果取到的值小于200M,就报警
.编写shell脚本
.加入crond定时任务,然后每3分钟检查一次
#总结:if条件语句可以做的事情还有很多,大家可以根据工作需求去多多开发挖掘,下篇将继续写shell脚本的另外一个条件语句case。好了,到这里又要说再见了,写的不好地方还望指出,多多交流提高,下次再会。
shell脚本中的if条件语句介绍和使用案例的更多相关文章
- shell脚本中的case条件语句介绍和使用案例
#前言:这篇我们接着写shell的另外一个条件语句case,上篇讲解了if条件语句.case条件语句我们常用于实现系统服务启动脚本等场景,case条件语句也相当于if条件语句多分支结构,多个选择,ca ...
- shell脚本中多个条件判断的语法
if [ "$content" = "hello" ]\ || [ "$content" = "kitty" ] the ...
- Linux centosVMware shell脚本介绍、shell脚本结构和执行、date命令用法、shell脚本中的变量
一. shell脚本介绍 shell是一种脚本语言 aming_linux blog.lishiming.net 可以使用逻辑判断.循环等语法 可以自定义函数 shell是系统命令的集合 shell脚 ...
- shell脚本中的各种表达式介绍和使用
#前言:在shell脚本中,有各种的表达式,包括有条件测试表达式,文件表达式,字符串表达式,整数表达式,接下来我们来了解一下他们的使用方法 1.条件测试表达式 #首先来看一下条件测试语法 #条件测试语 ...
- 在shell脚本中进行条件控制以及使用循环
转载请标明:http://www.cnblogs.com/winifred-tang94/ if条件语句语法: if [ 条件表达式 ] then 代码 else 代码 fi 注意:在上面的if条件语 ...
- shell脚本介绍、shell脚本结构和执行、date命令用法、shell脚本中的变量
7月11日任务 20.1 shell脚本介绍20.2 shell脚本结构和执行20.3 date命令用法20.4 shell脚本中的变量 20.1 shell脚本介绍 1.shell脚本语言是linu ...
- Shell脚本中执行sql语句操作mysql
对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本.本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语句的几种方法,供大家参考.对于脚本输出的 ...
- Shell脚本中执行sql语句操作mysql的5种方法【转】
对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本.本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语句的几种方法,供大家参考.对于脚本输出的 ...
- SHELL脚本中执行SQL语句操作MYSQL的5种方法
对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本.本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语句的几种方法,供大家参考.对于脚本输出的 ...
随机推荐
- 生鲜电商的两极战:巨头VS地头
"九月蟹黄满,十月蟹肉香",螃蟹年年相似,总是美味无边,但购买渠道却随着互联网普及而变得愈发多样起来.此前,大闸蟹礼券风靡就是最佳代表之一.虽然也引发诸多问题,但消费者也越 ...
- 【C#】WechatPay-API-v3 使用平台证书加密内容与应答|通知验签(SHA256 with RSA)
官方暂时没有维护应答与通知签名的验证C#示例,找了些资料被困扰了一天终于调试通了,贴出来下 . 此类提供两个方法: 1.敏感信息加密,如身份证.银行卡号.(特约商户进件接口需要): 2.应答与通知签验 ...
- python 字典元组集合字符串
s1 = ''hello, world!'' s2 = '\n\hello, world!\\n' print(s1, s2, end='') s1 = '\141\142\143\x61\x62\x ...
- docker RPM包安装
1. 下载 docker RPM包 docker 使用的系统是 Centos 7.6 基础设施服务器 # wget https://download.docker.com/linux/centos/ ...
- swoole(1)使用docker安装swoole环境
1.下载镜像 pull php 镜像 docker pull php:7.3-alpine3.8 创建容器 docker run -it --name test php:7.3-alpine3.8 s ...
- Docker实战之Kafka集群
1. 概述 Apache Kafka 是一个快速.可扩展的.高吞吐.可容错的分布式发布订阅消息系统.其具有高吞吐量.内置分区.支持数据副本和容错的特性,适合在大规模消息处理场景中使用. 笔者之前在物联 ...
- Windows 使用激活服务器激活操作步骤
最近装了win10企业版系统,总结下激活步骤,激活后是正版,半年后需要重新激活,不介意的小伙伴可以试试,这不是重点,重点是企业版超级clean...... 服务器激活系统步骤,打开cmd或者xshel ...
- 从HTML标签开始
开始这一切吧! 没错,你没看错,我将从HTML标签开始我的整个系列文章.很基础吧?但是每个前端人都是从最简单的HTML标签开始的,都是从一个<html></html>开始整个前 ...
- 【学习笔记】Golang学习方向整理
前言 作为一个Java开发,给大家说Golang方向,好吓人...溜了溜了... 哦对了,如有不对的地方,还请指出.感谢! 某面试平台golang技能要求简要摘录 掌握 GO 语言,熟悉常用 pack ...
- 峰哥说技术:03-Spring Boot常用注解解读
Spring Boot深度课程系列 峰哥说技术—2020庚子年重磅推出.战胜病毒.我们在行动 03 Spring Boot常用注解解读 在Spring Boot中使用了大量的注解,我们下面对一些常用的 ...