shell 脚本 的 基本知识 (IV)

shell中常用的控制语句及脚本的运行控制

一、for语句

for in

do

done

1)控制语句

exit 脚本直接退出

break 退出当前循环;即退出for后面的还要执行

continue 提前结束循环内部的命令,但不终止循环

这里写图片描述
这里写图片描述

【{} 和 `` 的区别】
***`seq 1 2 5`*** **可以设计步长(2为步长),也可以引用变量** 

这里写图片描述
这里写图片描述
这里写图片描述

***{1..5}*** **必须是可变长字符**

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

<一、测试:显示所有开机的主机>

这里写图片描述

这里的主机必须得在同一网段中,即可测试。

<二、数据库的库都以文件显示并保存在/mnt/mysql_backup>

[root@localhost mnt]# yum install mariadb-server -y

准备工作,建立好westos库和linux表
这里写图片描述
这里写图片描述
查看
这里写图片描述
开始写脚本测试
这里写图片描述
这里写图片描述

二、while语句

格式

while

do

done

  显示当前时间在一行
[root@localhost mnt]# vim whlie.sh
[root@localhost mnt]# cat whlie.sh
#!/bin/bash
while true
do
        echo -n `uptime`
        echo -ne "\r\r"
        sleep 1
done

这里写图片描述

传输email
[root@localhost mnt]# mail
No mail for root
[root@localhost mnt]# echo hello world | mail -s warning root

这里写图片描述

<三、当/下的容量达到80%,发警报email给root>

[root@localhost mnt]# vim mail_file.sh
[root@localhost mnt]# df -H
Filesystem          Size  Used Avail Use% Mounted on
/dev/vda1            11G  3.5G  7.4G  32% /
devtmpfs            481M     0  481M   0% /dev
tmpfs               497M   87k  497M   1% /dev/shm
tmpfs               497M   14M  484M   3% /run
tmpfs               497M     0  497M   0% /sys/fs/cgroup
/dev/mapper/vg0-vo  496M  2.5M  463M   1% /home
[root@localhost mnt]# dd if=/dev/zero of=/bigfile bs=1M count=5000
##截取命令保证负载超过80%来进行实验查看
5000+0 records in
5000+0 records out
5242880000 bytes (5.2 GB) copied, 59.6522 s, 87.9 MB/s
[root@localhost mnt]# df -H   ##查看负载已经超过80%
Filesystem          Size  Used Avail Use% Mounted on
/dev/vda1            11G  8.7G  2.1G  81% /
devtmpfs            481M     0  481M   0% /dev
tmpfs               497M   87k  497M   1% /dev/shm
tmpfs               497M   14M  484M   3% /run
tmpfs               497M     0  497M   0% /sys/fs/cgroup
/dev/mapper/vg0-vo  496M  2.5M  463M   1% /home
[root@localhost mnt]# sh mail_file.sh
Your / will full !!
Your / will full !!
^C

这里写图片描述
查看邮件每隔3秒就会以root用户身份发送一份邮件
这里写图片描述

三、if语句

格式

if

then

elif

then

….

else

fi

<四、测试:编写一个判断文件类型的脚本>

这里写图片描述
这里写图片描述

这里写图片描述

也可以用之前的函数,简化脚本,如下图

这里写图片描述
这里写图片描述
这里写图片描述

四、case语句

格式

case

word1)

action1

;;

word2)

action2

;;

….

action_last

esac

<五、输入 cat 显示 dog ;输入 dog 显示 cat >

先用if语句来做

这里写图片描述
这里写图片描述

下面用case语句来实现

这里写图片描述
这里写图片描述

if语句与case语句的区别:

if语句中的条件判断是从上到下顺序依次判断 case语句中的条件判断是同步的;

字符匹配常用case语句,因为if语句对于越置后的条件判断越慢,这样效率很低.

五、expect语句

expect***是自动应答命令用于交互式命令的自动执行;*

安装 yum install expect ,编写问题,脚本编写,自动回答脚本,幻术不一样;

spawn***是expect中的监控程序,其运行后会监控命令提出的交互问题;*

send 发送问题答案给交互命令

exp_continue 表示当问题不存在时继续回答下面的问题

expect eof 表示问题回答完毕退出expect环境

interact 表示问题回答完毕留在交互界面

set NAME [ lindex $argv n ] 定义变量

1)先编写一个问题脚本,提出四个问题;

这里写图片描述

2)编写expect 自动交互回答脚本;

这里写图片描述

3)执行expect查看;

这里写图片描述

4)现在注释掉一个问题,再次执行查看;

这里写图片描述
这里写图片描述

<六、测试:自动ssh连接脚本>

这里写图片描述
这里写图片描述

猜你喜欢

转载自blog.csdn.net/janenancy/article/details/80770050