Shell中常用的语句

本文介绍了Shell脚本的基础知识,包括exit、break、continue的区别,for、while、if语句的使用方法,以及如何通过case语句和expect实现自动应答。通过实际案例展示了如何编写脚本来完成如文件检测、用户创建、监控系统负载等任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、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 

这里写图片描述
执行脚本:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值