Shell编程学习笔记三(读取控制台输入、函数、综合案例:定时维护数据库)

1.read 读取控制台输入

  • 基本语法
    read(选项)(参数)
    选项:
    -p:指定读取值时的提示符;
    -t:指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待了
    参数:
    变量:指定读取值的变量名
  • 应用实例
    案例 1:读取控制台输入一个 num 值
    案例 2:读取控制台输入一个 num 值,在 10 秒内输入
    在这里插入图片描述

2.函数

(1)介绍

shell 编程和其它编程语言一样,有系统函数,也可以自定义函数。系统函数中,我们这里就介绍两个

(2)系统函数
  • basename基本语法
    basename [pathname] [suffix]
    功能:返回完整路径最后 / 的部分,常用于获取文件名

basename [string] [suffix] (功能描述:basename 命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来。
选项:
suffix 为后缀,如果 suffix 被指定了,basename 会将 pathname 或 string 中的 suffix 去掉。

  • dirname 基本语法
    dirname 文件绝对路径
    功能:从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分)
  • 应用实例
    案例 1:返回 /home/aaa/test.txt 的 “test.txt” 部分
    在这里插入图片描述
    案例 2:返回 /home/aaa/test.txt 的 /home/aaa
    在这里插入图片描述
(3)自定义函数
  • 基本语法
[ function ] funname[()]
{
	Action; 
	[return int;]
}

调用直接写函数名:funname [值] 不需要写形参
[]内的值是可选的,可写可不写。

  • 应用实例
    计算输入两个参数的和(read), getSum
    在这里插入图片描述

3.综合案例:定时维护数据库

  • 需求分析
    1)每天凌晨 2:10 备份 数据库 atguiguDB 到 /data/backup/db
    2)备份开始和备份结束能够给出相应的提示信息
    3)备份后的文件要求以备份时间为文件名,并打包成 .tar.gz 的形式,比如:
    2018-03-12_230201.tar.gz
    4)在备份的同时,检查是否有 10 天前备份的数据库文件,如果有就将其删除。
  • 思路分析
    在这里插入图片描述
  • 代码实现
#!/bin/bash

#完成数据库的定时备份
#备份的路径
BACKUP=/data/backup/db
#当前的时间作为文件名
DATETIME=$(date +%Y-%m-%d_%H%M%S)
#可以输出变量调试
#echo ${DATETIME}

echo "===========开始备份=========="
echo "========备份的路径是 $BACKUP/$DATETIME.tar.gz"

#主机
HOST=localhost
#用户名
DB_USER=***
#密码
DB_PWD=***
#备份数据库名
DATABASE=***
#创建备份的路径
#如果备份的路径文件夹存在,就使用,否则就创建
[ ! -d "$BACKUP/$DATETIME" ] && mkdir -p "$BACKUP/$DATETIME"

#执行mysql的备份数据库的指令
mysqldump -u${DB_USER} -p${DB_PWD} --host=$HOST $DATABASE | gzip > $BACKUP/$DATETIME/$DATETIME.sql.gz
#打包备份文件
cd $BACKUP
tar -zcvf $DATETIME.tar.gz $DATETIME
#删除临时目录
rm -rf $BACKUP/$DATETIME

#删除10天前的备份文件
find $BACKUP -mtime +10 -name "*.tar.gz" -exec rm -rf {} \;
echo "==========备份文件成功=========="

在这里插入图片描述
在这里插入图片描述
最后,使用命令 crontab -e将该脚本加入到系统的后台服务中:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值