shell

【现学现忘&Shell流程控制】— 42.if语句(2)

2020-10-30  本文已影响0人  繁华似锦Fighting

2、双分支if条件语句

语法格式:

if[ 条件判断式 ]
    then
        条件成立时,执行的程序
    else
        条件不成立时,执行的程序
fi

(1)示例1

我们写一个数据备份的例子,来看看双分支if条件语句。

# 需求:备份MySQL数据库
#!/bin/bash

# 1.首先需要同步时间
# 因为我们的服务器上的时间可能会存在误差,
# 我们可以链接ntp时间服务器,来自动更新时间,
# 这样我们服务器上的时间就准确了,
# 下面一行命令是链接到亚洲的ntp时间服务器上,更新时间。
# 目的是保证所有服务器的时间是统一的。
ntpdate asia.pool.ntp.org &>/dev/null

# 提示:你也可以单独写一个脚本,专门用于时间同步。
# &>/dev/null:为把所有输出丢入垃圾箱(不想看到在何输出)
# &>:为无论正确输出还是错误输出,都输出到一个文件中。
# /dev/null类似是一个虚拟设备,或者是当成回收站,
# 任何信息丢进去,就会消失不见。
# 如果有不需要看的命令提示信息,就可以这样处理。
# 这是一个标准写法。

# 2.把当前系统时间按照“年月日”格式赋予变量date
# 默认的时间格式
# [root@localhost tmp]# date
# 2020年 10月 18日 星期日 10:28:27 CST
# 只取年月日,注意+和%之间不能有空格,否则命令会报错。
# [root@localhost tmp]# date +%y%m%d
# 201018
date=$(date +%y%m%d)

# 3.统计mysql数据库的大小,并把结果赋予size变量。
# 该数据主要是一个统计数据,没有多大作用,
# 只是为了写日志,告诉你今天备份的MySQL数据库的大小。
size=$(du -sh /var/1ib/mysql)


# 4.开始备份数据库
# 4.1 判断备份目录是否存在,是否为目录
if [ -d /tmp/dbbak ]
    then
        # 4.2如果判断为真,执行以下脚本
        # dbinfo.txt:数据库备份说明文件,内容就是在某年某月的某一天,备份了多大的数据。
        # 把当前日期写入文件
        echo "Date:$date!" 〉 /tmp/dbbak/dbinfo.txt
        # 把数据库大小写入文件
        echo "Data size:$size" >> /tmp/dbbak/dbinfo.txt

        # 4.3 进入到备份目录dbbak中
        cd /tmp/dbbak
        
        # 4.4 备份数据库
        # 把数据库数据和备份说明文件进行打包压缩为mysql-lib-$date.tar.gz
        # &>/dev/null:为把所有输出丢入垃圾箱(不想看到在何输出)
        tar -zcf mysql-lib-$date.tar.gz /var/lib/mysql dbinfo.txt &>/dev/null
        
        # 4.5 删除备份说明文件
        rm -rf /tmp/dbbak/dbinfo.txt
    else
        # 4.6 如果判断为假,则建立备份目录
        mkdir /tmp/dbbak
        # 4.7 执行上边4.2到4.5的步骤
        # 把日期和数据库大小保存到备份说明文件
        echo "Date:$date!" 〉 /tmp/dbbak/dbinfo.txt
        echo "Data size:$size" >> /tmp/dbbak/dbinfo.txt 
        # 压缩备份数据库与备份说明文件
        cd /tmp/dbbak
        tar -zcf mysql-lib-$date.tar.gz /var/lib/mysql dbinfo.txt &>/dev/null
        # 删除备份说明文件
        rm -rf /tmp/dbbak/dbinfo.txt
fi      

说明:

这个数据库备份的方式不是很合理,主要是在备份数据库的那一行命令,如下:

tar -zcf mysql-lib-$date.tar.gz /var/1ib/mysql dbinfo.txt &>/dev/nul1

不合理的原因有:

注意:这只是数据库备份的练习,并不能在工作直接使用,但是思路就是这个思路,这里注意一下。

上一篇下一篇

猜你喜欢

热点阅读