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
相关推荐
dingdingfish3 天前
GNU Parallel 学习 - 第1章:How to read this book
bash·shell·gnu·parallel
似霰5 天前
Linux Shell 脚本编程——核心基础语法
linux·shell
似霰6 天前
Linux Shell 脚本编程——脚本自动化基础
linux·自动化·shell
偷学技术的梁胖胖yo7 天前
Shell脚本中连接数据库查询数据报错 “No such file or directory“以及函数传参数组
linux·mysql·shell
纵有疾風起16 天前
【Linux 系统开发】基础开发工具详解:软件包管理器、编辑器。编译器开发实战
linux·服务器·开发语言·经验分享·bash·shell
gis分享者18 天前
Shell 脚本中如何使用 here document 实现多行文本输入? (中等)
shell·脚本·document·多行·文本输入·here
柏木乃一18 天前
基础IO(上)
linux·服务器·c语言·c++·shell
angushine19 天前
CPU脚本并远程部署
shell
赵民勇23 天前
Linux/Unix中install命令全面用法解析
linux·shell
gis分享者24 天前
Shell 脚本中如何使用 trap 命令捕捉和处理信号(中等)
shell·脚本·信号·处理·trap·捕捉