一、exit、break、continue三者区别
exit 完全中断脚本的执行 |
break 中断脚本的循环,但是会执行循环外的语句 |
continue 跳出本次循环,进行下一次循环 |
进一步了解三者的区别,有如下实验:
[root@localhost mnt]# vim file.sh
执行该脚本:
脚本正常运行情况:
二、for语句
1.格式
for NUM in 1 2 3
for NUM in {1..3}
for NUM in seq 1 3
或者 for NUM in seq 1 2 10
do
done
2.{1..10}与 `seq 1 10`
{1..10}是1到10,`seq 1 10 `也是1到10,但是seq可以设定步长
例如:`seq 1 2 10` 步长为2从1到10
有如下实验:
[root@localhost mnt]# vim for.sh
执行该脚本:
[root@localhost mnt]# vim for.sh
执行该脚本:
编写脚本检测ip是否存在 |
[root@localhost mnt]# vim check_host.sh
#!/bin/bash
for IP in `seq 1 250`
do
ping -c1 -w1 172.25.254.$IP &>/dev/null
[ "$?" -eq "0" ]&&{
echo "172.25.254.$IP is up"
echo " "
}
done
建立一个数据库,编写脚本对所有数据库进行备份操作,每个数据库备份一个文件,以.sql结尾备份到/mnt/mysql_dump |
[root@localhost mnt]# yum install mariadb-server.x86_64 -y ##安装数据库
[root@localhost mnt]# systemctl start mariadb ##开启服务
[root@localhost mnt]# mysql -uroot ##建立数据库
编写脚本:
[root@localhost mnt]# vim mysql_dump.sh
执行脚本:
三、while语句
1.语句格式
while true 当条件为真执行
do
done
2.编写脚本,监控根分区的使用情况,当达到80%时给root发送邮件
查看根分区的使用情况
[root@localhost mnt]# vim checkload.sh
[root@localhost mnt]# sh checkload.sh & ##打入后台
[1] 4859
[root@localhost mnt]# dd if=/dev/zero of=/bigfile bs=1M count=6000##截取6000M的内存使根分区使用率变成80%以上
[root@localhost mnt]# mail
3脚本编写,监控根分区的使用情况,达到80%时自动弹出至当前shell
[root@localhost mnt]# vim checkload.sh
脚本的执行:
四、if语句
1.if语句的格式
if
then
elif
then
else
fi
2.脚本练习
<1>利用if语句编写脚本,判断文件类型
[root@localhost mnt]# vim check_file.sh
执行该脚本:
<2>编写脚本按要求用文件建立用户
1.文件数量不对时报错
2.文件不存在报错
3,文件行数差异报错
4.用户存在时显示用户存在,但是不修改用户密码
5.用户不存在时建立用户并设定密码
[root@localhost mnt]# vim user_create.sh
脚本的执行:
重新编辑用户文件,再次执行
<3>编写脚本输入cat 输出dog,输入dog输出cat
[root@localhost mnt]# vim test.sh
[ -eq ] 判断数值相等 [ = ] 字符相同
执行该脚本:
五、case语句
1.语句格式
case
word1 )
action1
;;
word2)
action2
;;
........
*)
action_last
esac
2.脚本编写
<1>.编写脚本输入cat 输出dog,输入dog输出cat
[root@localhost mnt]# vim dog.sh
脚本的执行:只进行一词匹配立即找到结果,相对if语句效率高
六、expect自动应答语句
1.基础信息
expect 是自动应答命令用于交互式命令的自动执行 |
send发送问题答案给交互命令 |
“\r”表示回车 |
exp_continue 表示当问题不存在时继续回答下面的问题 |
expect eof 表示问题回答完毕退出 expect 环境 |
interact 表示问题回答完毕留在交互界面 |
set NAME [ lindex $argv n ] 定义变量 |
需要安装expect才可以使用该语句
[root@localhost mnt]# yum install expect -y
2.编写自动应答脚本
[root@localhost mnt]# vim ask.sh
[root@localhost mnt]# vim answer.exp
执行脚本:
自动应答脚本的另一种写法
[root@localhost mnt]# vim answer0.exp
执行脚本:
3.编写脚本,自动连接其他主机
[root@localhost mnt]# vim auto_connetct.exp
执行脚本: