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
相关推荐
粉红色回忆7 小时前
在bash中进行基本数值计算
shell
粉红色回忆2 天前
linux 如何自定义文件描述符
shell
薛定谔的猫_C8T62 天前
程序人生-Hello’s P2P
c语言·汇编·程序人生·shell·二进制·计算机系统·hello
孙克旭_3 天前
day027-Shell自动化编程-基础
linux·运维·自动化·shell
shut up3 天前
Git的使用技巧
gitee·github·shell
粉红色回忆3 天前
linux简单理解输入输出重定向
shell
开挖掘机上班4 天前
Bash shell四则运算
linux·开发语言·bash·shell
Johny_Zhao4 天前
Linux服务器(CentOS/Ubuntu)接口Bond模式详解、配置指南及交换机对应接口的配置示例
linux·网络安全·信息安全·云计算·shell·cisco·huawei·系统运维·华三
粉红色回忆4 天前
简单理解linux文件描述符
shell
Johny_Zhao5 天前
Burp Suite 企业级深度实战教程
linux·网络·网络安全·信息安全·云计算·shell·burp suite·系统运维·itsm