欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux系统中shell脚本的常用控制语句

程序员文章站 2022-06-24 19:40:35
...

1.几个常用的语句

  • for 语句
  • while 语句
  • if 语句
  • case 语句
  • expect 语句

2.几个退出命令的比较

exit直接退出当前脚本
break仅仅退出本次循环
continue 退出本次循环进行下一次循环

测试:

vim test.sh

Linux系统中shell脚本的常用控制语句

调用:

Linux系统中shell脚本的常用控制语句

3.for语句

  • 基本结构
    for
    do
    done
  • 说明
`seq 1 5`可以设置步长,可以有变量{1..5}不可以设置步长
for语句参数可以传到循环以外,是嵌套关系,总共执行m*n次
for语句的变量仅仅最后变量被使用,循环定义变量依次执行,进行批处理

测试:

vim test.sh

Linux系统中shell脚本的常用控制语句

调用:

Linux系统中shell脚本的常用控制语句

vim test.sh

Linux系统中shell脚本的常用控制语句

调用:

Linux系统中shell脚本的常用控制语句

vim test.sh      ##for语句的嵌套

Linux系统中shell脚本的常用控制语句

调用:

Linux系统中shell脚本的常用控制语句

编写脚本:利用for语句查看能同网段可ping通的主机ip

vim check_ip.sh

Linux系统中shell脚本的常用控制语句

调用:

Linux系统中shell脚本的常用控制语句

编写脚本:实现数据库的备份,且每个库生成一个备份文件

#!/bin/bash
TABASE_MESSAGE=`mysql -uroot -predhat -EN -e "show databases;" | grep -E "^\*|schema$" -v`
mkdir -p /mnt/mysql_dump
for DATABASE_NAME in $DATABASE_MESSAGE
do
        mysqldump -uroot $DATABASE_NAME > /mnt/mysql_dump/${DATABASE_NAME}.sql
        [ "$?" -eq "0" ]&&{
                echo -e "\033[32m$DATABASE_NAME is backuped !!\033[0m"
        }
done

4.while语句

编写脚本:实现对cpu负载的动态监控

vim scan.sh 

Linux系统中shell脚本的常用控制语句

调用:

Linux系统中shell脚本的常用控制语句

编写脚本:根分区容量超过10%时给root用户发邮件报警

vim hello.sh

Linux系统中shell脚本的常用控制语句

调用:

Linux系统中shell脚本的常用控制语句

Linux系统中shell脚本的常用控制语句

5.if语句

  • 基本结构
if
then
elif
then
else
fi

编写脚本:用if判断文件是否存在并判断文件类型

vim check_file.sh

Linux系统中shell脚本的常用控制语句Linux系统中shell脚本的常用控制语句

调用:

Linux系统中shell脚本的常用控制语句

编写脚本:用if语句和函数判断文件是否存在并判断文件类型

vim check_file.sh

Linux系统中shell脚本的常用控制语句Linux系统中shell脚本的常用控制语句

调用:

Linux系统中shell脚本的常用控制语句

编写脚本:
a) 运行 test.sh dog 输出结果为 cat

b) 运行 test.sh cat 输出结果为 dog 除此以外都输出结果为 error

vim test.sh

Linux系统中shell脚本的常用控制语句

调用:

Linux系统中shell脚本的常用控制语句

编写脚本:通过文件建立用户,要求如下

a) 文件数量不对报错

b) 文件不存在报错

c) 文件行数差异报错

d) 用户存在显示用户存在,但是不改变用户密码

e) 当用户不存在建立用户并设定相应密码

vim create_user.sh

Linux系统中shell脚本的常用控制语句

Linux系统中shell脚本的常用控制语句

调用:

Linux系统中shell脚本的常用控制语句

Linux系统中shell脚本的常用控制语句


6.case语句

优点:可以进行多个同步的检测,避免cpu资源浪费

vim test.sh

Linux系统中shell脚本的常用控制语句

调用:

Linux系统中shell脚本的常用控制语句

编写脚本:利用case语句实现用户的删除和建立

vim user_ctl.sh

Linux系统中shell脚本的常用控制语句

编写脚本:自动建立分区、删除分区

fdisk /dev/vdb    ##查看已有分区

Linux系统中shell脚本的常用控制语句

vim dev.sh
  • 新建分区

Linux系统中shell脚本的常用控制语句

调用:

Linux系统中shell脚本的常用控制语句

Linux系统中shell脚本的常用控制语句

  • 删除分区
vim dev.sh

Linux系统中shell脚本的常用控制语句

调用:

Linux系统中shell脚本的常用控制语句Linux系统中shell脚本的常用控制语句

7.expect语句

       expect是自动应答命令用于交互式命令的自动执行。spawn是expect中的监控程序,其运行后会监控命令提出的交互问题。send:发送问题答案给交互命令。"\r"表示回车。

exp_continue                      ##标示当问题不存在时继续回答下面的问题
expect eof                        ##标示问题回答完毕退出 expect 环境
interact                          ##标示问题回答完毕留在交互界面
set NAME [ lindex $argv n ]       ##定义变量

read交互式脚本和expect自动应答脚本的对比:

read脚本:

vim test.sh

Linux系统中shell脚本的常用控制语句

调用:

Linux系统中shell脚本的常用控制语句

expect脚本:

yum install expect -y    ##安装该服务后才能创建expect自动应答脚本
vim answer.exp           ##设置时间间隔为2秒

Linux系统中shell脚本的常用控制语句

调用:

Linux系统中shell脚本的常用控制语句

常见的问题及解决方法:

  • 当exp自动应答文件中的回答在脚本中找不到对应的问题时,会报错,例如注释掉脚本中的一行

Linux系统中shell脚本的常用控制语句

调用:

Linux系统中shell脚本的常用控制语句

  • 解决方法:使用exp_continue命令
vim answer.exp

Linux系统中shell脚本的常用控制语句

调用:

Linux系统中shell脚本的常用控制语句

  • 自主调用问题答案
vim answer.sh

Linux系统中shell脚本的常用控制语句

调用:

Linux系统中shell脚本的常用控制语句

应用

编写脚本:登陆指定主机

vim ssh.exp

Linux系统中shell脚本的常用控制语句

调用:

Linux系统中shell脚本的常用控制语句

编写脚本:直接登陆指定主机

vim autossh.sh

Linux系统中shell脚本的常用控制语句

调用:

Linux系统中shell脚本的常用控制语句

编写脚本:查看可以登陆的主机IP

vim test.sh

Linux系统中shell脚本的常用控制语句

调用:

[aaa@qq.com mnt]# sh autossh.sh  
[aaa@qq.com mnt]# cat /mnt/host  ##查看可以登陆的主机ip列表文件