详解Shell编程之if语句实战(小结)

2019-09-23 08:58:39王旭

到这里应该是没有问题了~~

单分支if条件语句实践

把下面的测试文件中条件表达式改为if条件语句

[root@shell-yankerp sh]# [ -f file ] && echo "yes" || echo "no" 
yes 

修改如下:

if [ -f file ] 
 then 
 echo "yes" 
 else 
 echo "no" 
fi 

运行结果如下:

[root@shell-yankerp sh]# [ -f file ] && echo "yes" || echo "no" 
yes 
[root@shell-yankerp sh]# sh cs.sh 
yes 
[root@shell-yankerp sh]# cat cs.sh 
#!/bin/bash 
# Maintenance:<ywyankerp@163.com> 
# BINLOG:www.ywyankai.cn 
# DATE:03:31:35 CST, Sunday, 02 month, 2018, 04 
# Test scripts 
 
if [ -f file ] 
 then 
 echo "yes" 
 else 
 echo "no" 
fi 
[root@shell-yankerp sh]#

到这里if的一些基本语法应该掌握了,那么我们接下来,来点实际的。

实战1:开发shell脚本检测Nginx服务是否正常启动 如果宕机,那么就设置邮箱报警!!!

其实此章有很多的案例,但是还是那句话,我还是想用我的思想来编写整个脚本,这样能表达出来我的整个过程!

首先我们要知道为什么要写这个脚本?,我们的目的是要干什么?最后需要实现什么样的效果?,写了这个脚本到底能实现什么样的功能? 我感觉这个是我们首先需要考虑的问题。随后我们就可以带着这些问题,去编写我们的shell脚本

那么我们可以根据以上的需求分为三块 如:如何查看Nginx服务是否启动?  我们如何查看Nginx服务宕机时候的一些情况。 最后我们需要知道我们用什么样的工具来实现这个邮箱报警。

1、如何查看Nginx启动?

我们可以通过netstat -anput | grep nginx 来查看Nginx是否启动如下:


首先通过上图我们得到的信息是:我们可以通过上面那条命令来查看,那么接下来我们肯定是需要写在脚本中的,通过我们的if条件测试语句来写,最后我们进行比较,所以这时候我们最好的方法是提取它的行号,如下:


也就是说 使用wc -l这个命令可以知道它的行号,只有一行 所以显示1,那么我们来关闭Nginx再次查看


当我们关闭Nginx时 它已经没有80端口以及Nginx服务名的一些信息了,所以显示0 那么我们现在又能得出一个结论,如果 netstat -anput | grep nginx | wc -l 输出的为1 那么Nginx是启动的 输出的为0 那么Nginx已经停止运行;

到这里我们的两个信息已经知道了:如何查看Nginx服务是否启动?  我们如何查看Nginx服务宕机时候的一些情况。