linux系统用if语句事例,详解Shell编程之if语句实战(小结)

linux系统用if语句事例,详解Shell编程之if语句实战(小结)

2023年8月2日发(作者:)

linux系统⽤if语句事例,详解Shell编程之if语句实战(⼩结)对于if语句,其实很多⼈都肯定的听说过,那么if语句到底是什么,简单的说,就类似于汉语⾥⾯的如果----那么,if语句是linux运维⼈员在实际环境中使⽤的最频繁也是最重要的语句⼀、if条件语句1、单分⽀语句结构第⼀种语法如下:ifthen指令fi第⼆种语法if ; then指令fi在以上这两种⽅式中我还是喜欢⽤第⼀种,这个是看个⼈习惯的。在上⾯的两个语法中可以是 test [] [[]] (())等条件表达式,甚⾄可以使⽤命令作为条件表达式。注意:每个if语句都是以if开头 fi结束,中间并带有then;其实很简单,举个例⼦如下:if [ -f file ]thenecho "是⼀个普通⽂件"elseecho "不是⼀个普通⽂件"exit 1fi剖析:如果file是⼀个普通⽂件,那么就执⾏echo "是⼀个普通⽂件" 否则 输出⼀条"不是⼀个普通⽂件" 最后退出脚本其实以下的这段命令更能清晰的了解if语句如下:如果那么那肯定长的不帅果如2、以上就是单分⽀的if语句,接下来看看双分⽀的if语法结构ifthen指令⼀else指令⼆fi以上就是单分⽀的if语句结构,那么在举个例⼦如下:if [ -f file ]thenecho "这是⼀个普通⽂件"elseecho "NONONO"fi这个和以上的例⼦是⼀样的。同样是测试file是不是⼀个普通⽂件,如果是,那么就输出指令1 否则那么就输出指令2到这⾥我们在来⼀个形象描述如果那么就快点学,快点练否则你永远都不可能学会果如我们发现 单分⽀和双分⽀的区别就在于⼀个有else ⼀个没有。3、多分⽀if语句结构我们在上⾯说了 单分⽀和双分⽀ 这⾥⼜有了⼀个多分⽀,我们可以理解为双分⽀⾥⾯包含了单分⽀,那么多分⽀⾥⾯肯定包含了单分⽀+双分⽀:个⼈理解,好像有点绕? 先来看看多分⽀吧 如下:if 语句多分⽀结构主体为:如果.....那么....否则如果.....那么.....否则如果.....那么,,,,例1:if [ -f file ]thenecho "yes yes yes"elif [ -z file ]thenecho "yes yes"elseecho "nonono"fi解释如下图:看完图还是没理解? 没有关系 如下:到这⾥应该是没有问题了~~单分⽀if条件语句实践把下⾯的测试⽂件中条件表达式改为if条件语句[root@shell-yankerp sh]# [ -f file ] && echo "yes" || echo "no"yes修改如下:if [ -f file ]thenecho "yes"elseecho "no"fi运⾏结果如下:[root@shell-yankerp sh]# [ -f file ] && echo "yes" || echo "no"yes[root@shell-yankerp sh]# sh [root@shell-yankerp sh]# cat #!/bin/bash# Maintenance:# BINLOG:# DATE:03:31:35 CST, Sunday, 02 month, 2018, 04# Test scriptsif [ -f file ]thenecho "yes"elseecho "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服务宕机时候的⼀些情况。那么就接下来就剩下邮件告警了,我们可以使⽤sendmail来实现,安装如下:1.安装相关的依赖包[root@shell-yankerp sh]# yum install perl-Net-SSLeay perl-IO-Socket-SSL -y2.解压并安装[root@shell-yankerp ~]# tar zxf [root@shell-yankerp ~]# cd sendEmail-v1.56/[root@shell-yankerp sendEmail-v1.56]# cp sendEmail /usr/local/bin/sendEmail到这⾥我们先发个邮件试试,确保邮件可以发送[root@shell-yankerp ~]# /usr/local/bin/sendEmail -f yankerpcs@ -t ywyankerp@ -s -u"Nginx测试" -o message-content-type=html -o message-charset=utf8 -xu yankerpcs -xp ******* -m "Nginx正在测试"这边我已经收到了邮件报警测试的邮件了3、接下来就可以开始写脚本了如下:#!/bin/bash# Maintenance:# BINLOG:# DATE:03:31:35 CST, Sunday, 02 month, 2018, 04# Test scriptsNX=`netstat -anput | grep nginx | wc -l`if [ "$NX" -eq 0 ]then/usr/local/nginx/sbin/nginxfiif [ "$?" -ne 0 ]then /usr/local/bin/sendEmail -f yankerpcs@ -t ywyankerp@ -s -u "Nginx报警" -o message-content-type=html -o message-charset=utf8 -xu yankerpcs -xp ******* -m "Nginx启动失败尽快查看" &> /dev/nullfi在这⾥我会⼀条条的解释:NX=`netstat -anput | grep nginx | wc -l` :这就是上⾯测试的那条命令,如果Nginx宕机就输出0 正常运⾏那么就输出1 来确定Nginx运⾏状况赋值给了变量NXif [ "$NX" -eq 0 ] //如果NX执⾏的结果为0then //那么/usr/local/nginx/sbin/nginx //启动nginx服务fi最后结束符fiif [ "$?" -ne 0 ]then /usr/local/bin/sendEmail -f yankerpcs@ -t ywyankerp@ -s -u "Nginx报警" -o message-content-type=html -o message-charset=utf8 -xu yankerpcs -xp ****** -m "Nginx启动失败尽快查看" &> /dev/nullfi当我们启动Nginx启动失败时 我们在这⾥使⽤特殊的状态变量$? 查看上⼀条命令是否为0 是0就是成功。解释:如果启动Nginx失败,那么就会执⾏ /usr/就是这个邮箱报警程序 输出⼀条 Nginx启动失败尽快查看最后的脚本是这样的 如下:那么接下来我们执⾏:1.⾸先我们模拟Nginx宕机,随后运⾏脚本在第⼀条命令我们可以看到nginx没有启动 当我们运⾏脚本它检测到了Nginx宕机后就会执⾏启动操作是以下语句实现的如下:NX=`netstat -anput | grep nginx | wc -l`if [ "$NX" -eq 0 ]then/usr/local/nginx/sbin/nginxfi2、我们尝试修改Nginx的启动路径,故意出现Nginx启动失败的情节,来测试邮箱是否能够正常接收修改完成后运⾏此脚本实现此效果的脚本段如下:if [ "$?" -ne 0 ]then /usr/local/bin/sendEmail -f yankerpcs@ -t ywyankerp@ -s -u "Nginx报>警" -omessage-content-type=html -o message-charset=utf8 -xu yankerpcs -xp ****** -m "Nginx启动失败尽>快查看" &>/dev/nullfi随后我们添加计划任务 每1分钟执⾏⼀次脚本其实到这⾥我们的⼀个实例就结束了,虽然这表⾯上是⼀个实例,但是MySQL PHP? SSHD这些各种服务的检测脚本那么肯定是没有任何的问题了,包括检测磁盘空间的占⽤情况等等,都是可以举⼀反三的,在这⾥我就不在演⽰了。本次就到这⾥,希望对您有所帮助,再见!⼩编觉得挺不错的,现在分享给⼤家,也给⼤家做个参考。⼀起跟随⼩编过来看看吧

发布者:admin,转转请注明出处:http://www.yc00.com/web/1690918138a463223.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信