king

Shell编程详解(四)

king Shell 2018-05-14 2304浏览 0

1.11 read读取控制台输入

read(选项)(参数)

选项:

-p:指定读取值时的提示符;

-t:指定读取值时等待的时间(秒),如果没有在指定时间内输入,就不再等待了。

参数

变量:指定读取值的变量名

Shell编程详解(四)

Shell编程详解(四)

1.12 函数

shell编程和其他编程语言一样,有系统函数,也可以自定义函数。

系统函数

basename(返回完整路径最后/的部分,常用于获取文件名)

basename [pathname] [suffix]

basename [string] [suffix]

suffix为后缀,如果suffix被指定了,basename会将pathnamestring中的suffix去掉。

dirname(返回完整路径最后/的前面部分,常用于返回lu路径部分)

dirname    文件绝对路径(从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分))

Shell编程详解(四)

自定义函数

[function] funname[()]

{

    Action;

    [return int;]

}

调用直接写函数名:funname    []

Shell编程详解(四)

Shell编程详解(四)

1.13 Shell编程综合案例

需求分析:

1)每天凌晨2:10备份数据库DB1/data/backup/db

2)备份开始和备份结束能够给出相应的提示信息

3)备份后的文件要求以备份时间为文件名,并打包成.tar.gz的形式,比如2018-05-04_154833.tar.gz

4)在备份的同时,检查是否有10天前备份的数据库文件,如果有就将其删除。

脚本代码如下(mysql_db_backup.sh):

#!/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=root

#密码

DB_PWD=123456

#备份数据库名

DATABASE=DB1

#创建备份的路径

#如果备份的路径文件夹存在,就使用,否则就创建

[ ! -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 "=====备份文件成功==========="

注意:

有时候安装好MySQL程序的时候,直接输入命令mysqlmysqldump会发现提示命令不存在,这是由于系统默认会查找/usr/bin下的命令,如果这个命令不在这个目录下,当然会找不到命令

解决方法;

首先得知道mysql命令或mysqldump命令的完整路径,可以使用find命令查找

find  / -name mysql -print

比如mysql的路径是:/usr/local/mysql/bin/mysql,然后映射一个链接到/usr/bin目录下,相当于建立一个链接文件

ln -s /usr/local/mysql/bin/mysql /usr/bin

Shell编程详解(四)

Shell编程详解(四)

Shell编程详解(四)

Shell编程详解(四)

Shell编程详解(四)

 


继续浏览有关 shell 的文章
发表评论