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
相关推荐
吴声子夜歌8 天前
Shell编程实例——编写安全的shell脚本(二)
linux·运维·shell
吴声子夜歌9 天前
Shell编程实例——内务及管理任务(一)
linux·运维·shell
吴声子夜歌9 天前
Shell编程实例——高级脚本编程(一)
linux·运维·网络·shell
吴声子夜歌9 天前
Shell编程实例——bash的配置与自定义(二)
linux·运维·shell
吴声子夜歌10 天前
Shell编程实例——与解析相关的任务(二)
linux·运维·shell
吴声子夜歌10 天前
Shell编程实例——脚本编程的附加特性
linux·运维·shell
云计算练习生10 天前
什么是内核?操作系统内核到底管哪些事
linux·windows·操作系统·内核·shell
吴声子夜歌13 天前
Shell编程实例——bash入门
linux·运维·shell
Swizard13 天前
Linux 日志神器 journalctl 完全指南:彻底替代传统日志查看方式
shell
吴声子夜歌14 天前
Shell编程——数组
linux·运维·shell