shell 脚本 -2 循环的初步使用

1、通过脚本测试主机是否在线

vim ping.sh

js 复制代码
#!/bin/bash
ping -c2 -w1 $1 &>/dev/null && echo "$1 is online" || echo "$1 is off line"


测试

[root@localhost ~]# vim ping.sh 
[root@localhost ~]# bash ping.sh 192.168.107.190
192.168.107.190 is online
[root@localhost ~]# bash ping.sh 192.168.107.191
192.168.107.191 is off line
[root@localhost ~]# 

2、通过脚本实现对于系统磁盘的监控

vim disk.sh

js 复制代码
#!/bin/bash
use=`df | grep /dev/sda | tr -s " "| cut -d " " -f5 | tr -d %`
[ $use -gt 15 ]&& echo "磁盘使用量过高"  || echo "正常"



测试

[root@localhost ~]# bash disk.sh 
磁盘使用量过高
[root@localhost ~]# vim disk.sh 
[root@localhost ~]# 

一般过高条件设置为80

[root@localhost ~]# vim disk.sh 
[root@localhost ~]# bash disk.sh 
正常
[root@localhost ~]# 

3、通过if脚本实现对于httpd服务的监控

vim httpd.sh

js 复制代码
#!/bin/bash
if ss -natp | grep 80 &>/dev/null
then
echo "httpd 服务已开启"
else
echo "httpd 服务未开启"
systemctl start httpd
   if ss -natp | grep 80 &>/dev/null
   then
   echo "成功开启"
   else
   echo "启动失败"
   fi
fi
~        


测试

[root@localhost ~]# vim httpd.sh 
[root@localhost ~]# bash httpd.sh 
httpd 服务已开启
[root@localhost ~]# 

4、通过if循环实现 分数的分类 (优秀 良好 及格 不及格)

vim fenshu.sh

js 复制代码
#!/bin/bash
# 90-100 youxiu 80-89 lianghao 60-79 jige  0-59 bujige

read -p "请输入你的分数(0-100):" num

if [ $num -ge 90 -a $num -le 100 ]
then
echo "优秀"
elif [ $num -ge 80 -a $num -le 89 ]
then
echo "良好"
elif [ $num -ge 60 -a $num -le 79 ]
then
echo "及格"
elif [ $num -ge 0 -a $num -le 59 ]
then
echo "不及格"
else
echo "输入有误"
bash $0
fi



测试

[root@localhost ~]# bash fenshu.sh 
请输入你的分数(0-100):68
及格
[root@localhost ~]# 59
bash: 59: 未找到命令...
[root@localhost ~]# bash fenshu.sh 
请输入你的分数(0-100):59
不及格
[root@localhost ~]# bash fenshu.sh 
请输入你的分数(0-100):90
优秀
[root@localhost ~]# 

5、通过shell脚本实现石头剪刀布的游戏

vim youxi.sh

js 复制代码
#!/bin/bsah
# 0石头  1剪刀  2布
m=`echo $[RANDOM%3]`

read -p "请输入  0石头  1剪刀  2布:" n


if [ $m -eq $n  ]
then
echo "打平"
elif [ $m -eq 0 -a $n -eq 1 -o $m -eq 1 -a $n -eq 2 -o $m -eq 2 -a $n -eq 0  ]
then
echo "机器赢,你是 $n 机器是 $m"
elif [ $n -eq 0 -a $m -eq 1 -o $n -eq 1 -a $m -eq 2 -o $n -eq 2 -a $m -eq 0  ]
then
echo "你赢,你是 $n 机器是 $m"
else
echo "输入有误,请重新输入"
bash $0
fi




测试
[root@localhost ~]# bash youxi.sh 
请输入  0石头  1剪刀  2布:2
打平
[root@localhost ~]# bash youxi.sh 
请输入  0石头  1剪刀  2布:1
你赢,你是 1 机器是 2
[root@localhost ~]# bash youxi.sh 
请输入  0石头  1剪刀  2布:0
你赢,你是 0 机器是 1
[root@localhost ~]# vim youxi.sh
[root@localhost ~]# 

6、通过case语句来实现对于分数的分类

vim fs.sh

js 复制代码
#!/bin/bash
read -p "请输入你的分数(正整数)" num

case $num in
9[0-9]|100)
echo "优秀"
;;
8[0-9])
echo "良好"
;;
6[0-9]|7[0-9])
echo "及格"
;;
[0-9]|[1-5][0-9])
echo "不及格"
;;
*)
echo "输入有误,请重新输入"
bash $0
;;
esac





测试
[root@localhost ~]# bash fs.sh 
请输入你的分数(正整数)60
及格
[root@localhost ~]# bash fs.sh 
请输入你的分数(正整数)90
优秀

7、通过case语句判断输入的是yes还是no

vim key.sh

js 复制代码
#!/bin/bash
read -p "请输入 yes 或 no:" key

key=` echo $key | tr 'A-Z' 'a-z' `

case $key in
yes|y)
echo "你输入的是yes"
;;
no|n)
echo "你输入的是no"
;;
*)
echo "输入有误"
esac


测试
[root@localhost ~]# bash key.sh 
请输入 yes 或 no:YES           
你输入的是yes
[root@localhost ~]# bash key.sh 
请输入 yes 或 no:NO
你输入的是no

8、通过脚本提取系统的相关信息

vim xitong.sh

js 复制代码
#!/bin/bash 

echo -e "HOSTNAME                               `hostname`$END"
echo -e "IPADDR                                 `ifconfig ens33 | head -2 | tail -1 | tr -s " "| cut -d " " -f3`$END"
echo -e "OVERSION                               ` cat /etc/os-release | head -2 | tail -1`$END"
echo -e "KERNEL                                 ` uname -r`$END"
echo -e "CPU                                    ` lscpu | head -13 | tail -1`$END"
echo -e "MEMORY                                 `free -h | grep Mem | tr -s " " | cut -d " " -f2`$END"
echo -e "DISK                                   `lsblk | head -2 | tail -1 | tr -s " " | cut -d " " -f4`$END"
~     



测试
[root@localhost ~]# bash xitong.sh 
HOSTNAME                               localhost.localdomain
IPADDR                                 192.168.107.190
OVERSION                               VERSION="7 (Core)"
KERNEL                                 3.10.0-693.el7.x86_64
CPU                                    型号名称:        12th Gen Intel(R) Core(TM) i7-12700H
MEMORY                                 1.8G
DISK                                   80G
相关推荐
岚天start10 小时前
[K8S监控]-K8S容器pod异常状态监控脚本并推送钉钉告警
容器·kubernetes·钉钉·shell·告警
AlbertS3 天前
Shell脚本中set -e和set -o pipefail的作用
shell·pipefail·trap·脚本错误·控制流程
阿海5744 天前
安装php7.4.33的shell脚本
php·shell
阿海5744 天前
卸载redis7.2.4的shell脚本
linux·redis·shell
小嘟嘟135 天前
从基础到进阶:掌握 userdel,玩转 Linux 用户管理的 “减法” 艺术
linux·运维·网络·shell
gis分享者5 天前
如何在 Shell 脚本中实现文件的读写操作?(容易)
shell·文件·awk·echo·cat··
eight *6 天前
源码部署docker自动化脚本
docker·shell
gis分享者7 天前
如何在 Shell 脚本中使用管道(pipeline)实现数据传递?(容易)
linux·pipeline·shell·脚本·管道·数据传递
シ風箏9 天前
Shell【脚本 06】监测文件数据量并压缩及查看远程服务器状态并删除文件脚本分享
linux·运维·服务器·github·shell
pingzhuyan10 天前
linux运维异常(总) - 排查与修复(系统yum,docker,网络dns解析等)
linux·运维·docker·centos·shell