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
相关推荐
saber_andlibert13 小时前
【Linux】Shell脚本
运维·chrome·vscode·编辑器·vim·shell
岚天start7 天前
解决方案—K8S集群的日志按天并按照命名空间分类定时同步到日志服务器
服务器·docker·kubernetes·shell·日志备份
aitav08 天前
⚡ Linux awk 命令全面详解(包括记录、字段、命令空间)
linux·运维·服务器·bash·shell·awk
VincentHe12 天前
当 ServerCat 遇上 Shell 环境变量:一次服务器监控性能优化记录与探索
服务器·shell·监控
虚伪的空想家14 天前
ip网段扫描机器shell脚本
android·linux·网络协议·tcp/ip·shell·脚本·network
谅望者15 天前
Linux文件查看命令完全指南:cat、less、head、tail、grep使用详解
linux·excel·less·shell·文件操作·命令行·系统运维
hello_25017 天前
Shell脚本高效编写技巧
运维·shell
leaf9z18 天前
阿里云ECS在线扩容磁盘
阿里云·云计算·shell
gfdgd xi20 天前
deepin 终端,但是版本是 deepin 15 的
linux·python·架构·ssh·bash·shell·deepin
大米粥哥哥23 天前
Qt QProcess基于Linux的命令管道符号无效问题【已解决】
linux·qt·shell·qprocess·1024程序员节·管道符号