shell编程-流程控制-if语句(跟C、Java语言语法有很大不同)

1. 单分支if条件语句

(1)格式如下:

if [ 条件判断式 ]
	then
		程序
fi

(2)或者格式如下:

 if [ 条件判断式 ] ; then
	程序
 fi 

注意事项:
(1) If后面就是test判断式,中括号和条件判断式之间必须有空格
(2) 个人比较喜欢第一种格式,因为他跟c、Java等语言格式比较类似
(3) if语句使用fi结尾,和一般语言使用大括号结尾不同

举个栗子:

  • (1)判断分区使用率,如果根分区的使用率大于10%的话,就报警(为了实现才写成的10%),开始编写shell脚本
    在这里插入图片描述
    (2)进行测试
    在这里插入图片描述

2. 双分支if条件语句

格式如下:


if [ 条件判断式 ]
	then
		条件成立时,执行的程序
else
		条件不成立时,执行的另一个程序
fi

举个栗子:

  • (1) 备份MySQL数据库
    在这里插入图片描述
    注意: 必须联网才能同步时间
  • (2)备份/etc目录
    在这里插入图片描述
  • (3)判断apache是否启动
    在这里插入图片描述
    判断apache是否启动小疑问: 这里为什么用nmap来判断apache是否启动那???
    <1> 要想判断一个服务是运行的,有多种方法可以看到,可以用ps命令。这个是grep进程,不能说明是apache运行了。
    在这里插入图片描述
    开启apache服务之后在查,在用ps查询,这时才开启。 但是这里存在一个问题: 启动阿帕奇之后,就会查找到了。但是有些情况下,就算阿帕奇启动了,但是死机了,如果查了阿帕奇的进程在这,但是不能相应客户端的请求了,因为被人的恶意攻击,把我的apache服务器给托死了。所以这种方法不一定准。
    在这里插入图片描述
    <2> 判断apache是否启动,也可以判断端口,只要看到80端口,就证明阿帕奇就是启动的,这样同样存在问题, 他不能确定你的apache能不能正常连接,正常提供访问,他只能确定阿帕奇是正常启动的。有可能后台死机了,根本不能提供访问。 不光是阿帕奇可以占用80端口,其他的网页服务也有的占用80端口。
    在这里插入图片描述
    <3> 判断apache是否启动,最有效的是nmap命令(在shell脚本中使用的就是nmap),是远程扫描命令, 他是个扫描工具,用它扫描我的计算机,如果能正常连接阿帕奇的端口,就能返回阿帕奇的状况,是open,证明是打开的,可以正常访问,这样更准确。nmap的功能特别强大。nmap默认是没有装的。用yum装一下就行了。 yum -y install nmap
    在这里插入图片描述
    在这里插入图片描述
    提示: 在这个脚本中设置一个定时任务,每15分钟执行一次,这个脚本非常用。

3. 多分支if条件语句

格式如下:

if [ 条件判断式1 ]
	then
		当条件判断式1成立时,执行程序1
elif [ 条件判断式2 ]
	then 
		当条件判断式2成立时,执行程序2
.........省略更多条件...............
else 
		当所有条件都不成立时,最后执行此程序
fi

举个栗子:

  • (1)判断用户输入的式什么文件,编写shell脚本。
    在这里插入图片描述
    在这里插入图片描述
    (2)开始测试
    在这里插入图片描述
    小提示: exit 1 跳出的返回值(代码)自定义为1,如果在这里跳出了,我用echo $?去查的时候返回值就是1。如果不写exit,虽然这块命令执行了,但是还是会向下继续执行,不会终止我的if语句。
    在这里插入图片描述
    注意: 报错完一定要写exit 跳出程序,否则下面的内容还是会执行。

4. 总结

所有的计算机技术不是学会的,而是练会的。所以要多写代码,这样才能熟练掌握。建立编程思想。

猜你喜欢

转载自blog.csdn.net/weixin_46818279/article/details/107655731