shell之if判断句

2023-10-21 15:20
文章标签 shell 判断句

本文主要是介绍shell之if判断句,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

条件测试操作

1、文件测试

-d
这里写图片描述
-f
这里写图片描述
-e
这里写图片描述
-r
这里写图片描述
-w 测试当前用户写 -x 测试当前用户是否有可执行权限。

2、整数值比较

-eq:等于。
-ne:不等于。
-gt:大于。
-lt:小于。
-le:小于或等于。
-ge:大于或等于。(l小、g、大、e等于)
这里写图片描述

3、字符串比较

=等 、!=不等、-z检查是否为空
这里写图片描述
这里写图片描述
这里写图片描述

4、逻辑测试

&& 与 、||或、!非。
4、逻辑测试
&& 与 、||或、!非。

使用if 条件语句

1、单分支

if 条件测试
then
命令
fi

2、双分支

if 条件测试
then
命令
else
命令
fi

3、多分支

if 条件测试
then
命令
(可多个elif)elif 条件测试
then
命令
else
命令
fi
可以fi结束 下一行重新开始新的条件测试。
例如:
这里写图片描述
这里写图片描述
这里写图片描述

实验案例

一、条件测试操作
1、文件测试
(1)测试目录/media是否为目录,$?返回值为0,表示存在此目录。
这里写图片描述
如果$?返回值非0,表示不存在此目录
这里写图片描述
(2)测试目录是否存在,输出结果更加直观。
输出“yes”表示该目录存在
这里写图片描述
无“yes”输出表示该目录不存在
这里写图片描述
2、整数值比较
(1)判断当前已登录的用户数,当超过5个时输出“too many”。
这里写图片描述
没有出现“too many” 说明没有超过5个。
(2)判断当前可用的空闲内存(buffers/cache)大小,当低于2048MB输出具体数值。
这里写图片描述
3、字符串比较
用户输入“yes”或“no”来确认某个任务
这里写图片描述
4、逻辑测试
判断当前linux系统的内核版本是否大于2.4。
查看内核
这里写图片描述
判断
这里写图片描述
二、if条件语句
1、单分支if语句
(1)判断挂载点目录,若不存在则自动创建
这里写图片描述
这里写图片描述
(2)判断当前用户是否为root,如果不是则执行“exit 1”退出脚本,不再执行其他代码。
这里写图片描述
这里写图片描述
2、双分支if语句
(1)判断目标主机是否存活,显示检测结果
这里写图片描述
这里写图片描述
(2)检查vsftpd服务是否运行,若运行则列出监听地址,PID号;否则启动服务(插入linux系统安装光盘,安装一下vsftpd软件包)。
这里写图片描述
启动vsftpd服务(service vsftpd start),运行一下脚本,查看结果。
停止vsftpd服务(service vsftpd stop),运行一下脚本,查看结果。
这里写图片描述
3、多分支if语句
(1)根据输入的考试分数不同来区分优秀,合格,不合格三挡。
这里写图片描述
这里写图片描述
三、
1、编写sysmon.sh脚本
(1)使用df命令提取出根分区的磁盘占用率,赋值给变量DUG。
(2)使用mpstat命令提取CPU使用率(需安装sysstat软件包),赋值给变量CUG。
(3)使用free命令提取出内存使用率,赋值给变量MUG。
(4)判断上述监控项目是否超标,将需要告警的信息保存到/tmp/alert.txt文件。
(5)判断/tmp/alert.txt文件是否存在,若存在则作为告警邮件发送。

[root@localhost ~]# vi /root/sysmon.sh
#!/bin/bash
# 提取性能监控指标(磁盘占用、CPU使用、内存使用)
DUG=$(df -h | grep “/$” | awk ‘{print $5}’ | awk -F% ‘{print $1}’)
CUG=$(expr 100 - $(mpstat | tail -1 | awk ‘{print $12}’ | awk -F. ‘{print $1}’))
注明:如果系统使用中文登录,需要将上一行的$12改为$11
MUG=$(expr $(free | grep “cache:” | awk ‘{print $3}’) \* 100 / $(free | grep “Mem:” | awk ‘{print $2}’))
# 设置告警日志文件、告警邮箱
ALOG=”/tmp/alert.txt”
AMAIL=”monitor@aaa.com”
# 判断是否记录告警
if [ $DUG -gt 90 ]
then
echo “磁盘占用率:$DUG %” >> $ALOG
fi
if [ $CUG -gt 80 ]
then
echo “CPU使用率:$CUG %” >> $ALOG
fi
if [ $MUG -gt 90 ]
then
echo “内存使用率:$MUG %” >> $ALOG
fi
# 判断是否发送告警邮件,最后删除告警日志文件
if [ -f $ALOG ]
then
cat $ALOG | mail -s “Host Alert” $AMAIL
rm -rf $ALOG
fi
[root@localhost ~]# chmod +x /root/sysmon.sh

2、测试sysmon.sh脚本的执行情况
(1)确认有可用的邮件服务器(如Postfix、Sendmail等),然后调低监控阈值,执行sysmon.sh脚本进行测试。

[root@localhost ~]# /root/sysmon.sh

3、设置crontab计划任务
(1)确认系统服务crond已经运行。

[root@localhost ~]# /etc/init.d/crond status
crond (pid 5839) 正在运行…

添加crontab计划任务配置,每半小时调用一次sysmon.sh脚本程序。

[root@localhost ~]# crontab –e
*/30 * * * * /root/sysmon.sh

这篇关于shell之if判断句的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/255250

相关文章

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

SpringShell命令行之交互式Shell应用开发方式

《SpringShell命令行之交互式Shell应用开发方式》本文将深入探讨SpringShell的核心特性、实现方式及应用场景,帮助开发者掌握这一强大工具,具有很好的参考价值,希望对大家有所帮助,如... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

shell脚本自动删除30天以前的文件(最新推荐)

《shell脚本自动删除30天以前的文件(最新推荐)》该文章介绍了如何使用Shell脚本自动删除指定目录下30天以前的文件,并通过crontab设置定时任务,此外,还提供了如何使用Shell脚本删除E... 目录shell脚本自动删除30天以前的文件linux按照日期定时删除elasticsearch索引s

Linux中shell解析脚本的通配符、元字符、转义符说明

《Linux中shell解析脚本的通配符、元字符、转义符说明》:本文主要介绍shell通配符、元字符、转义符以及shell解析脚本的过程,通配符用于路径扩展,元字符用于多命令分割,转义符用于将特殊... 目录一、linux shell通配符(wildcard)二、shell元字符(特殊字符 Meta)三、s

shell脚本快速检查192.168.1网段ip是否在用的方法

《shell脚本快速检查192.168.1网段ip是否在用的方法》该Shell脚本通过并发ping命令检查192.168.1网段中哪些IP地址正在使用,脚本定义了网络段、超时时间和并行扫描数量,并使用... 目录脚本:检查 192.168.1 网段 IP 是否在用脚本说明使用方法示例输出优化建议总结检查 1

jenkins 插件执行shell命令时,提示“Command not found”处理方法

首先提示找不到“Command not found,可能我们第一反应是查看目标机器是否已支持该命令,不过如果相信能找到这里来的朋友估计遇到的跟我一样,其实目标机器是没有问题的通过一些远程工具执行shell命令是可以执行。奇怪的就是通过jenkinsSSH插件无法执行,经一番折腾各种搜索发现是jenkins没有加载/etc/profile导致。 【解决办法】: 需要在jenkins调用shell脚

站长常用Shell脚本整理分享(全)

站长常用Shell脚本整理分享 站长常用Shell脚本整理分享1-10 站长常用Shell脚本整理分享11-20 站长常用Shell脚本整理分享21-30 站长常用Shell脚本整理分享31-40 站长常用Shell脚本整理分享41-50 站长常用Shell脚本整理分享51-59 长期更新

Shell脚本实现自动登录服务器

1.登录脚本 login_server.sh #!/bin/bash# ReferenceLink:https://yq.aliyun.com/articles/516347#show all host infos of serverList.txtif [[ -f ./serverList.txt ]]thenhostNum=`cat ./serverList.txt | wc -l`e

[轻笔记]ubuntu shell脚本切换conda环境

source /home/yourhostname/anaconda3/etc/profile.d/conda.sh # 关键!!!conda activate env_name