Shell学习笔记&Mysql备份脚本
2019-02-16 15:40
357 查看
Shell学习笔记
基础语法
定义变量
例子:
A=123
#!/bin/bash # date 2019/2/15 # author zzh echo "Hello World!" A=123 echo "This is my First Var $A"
输出结果:
[root@localhost 文档]# echo "aaa" aaa [root@localhost 文档]#
判断上次命令执行结果
$?1 :
执行失败 127
执行成功 0
[root@localhost 文档]# asdfsfsa bash: asdfsfsa: command not found [root@localhost 文档]# $? bash: 127: command not found [root@localhost 文档]# [root@localhost 文档]# ls shellTest.sh [root@localhost 文档]# $? bash: 0: command not found [root@localhost 文档]#
If条件判断语句
语法:
if
语句1
else
语句2
fi
#!/bin/bash # date 2019/2/15 # author zzh Num1=100 num2=200 if(($Num1 > $num2));then echo "num1大于num2" else echo "num1小于num2" fi
条件:
练习:
#!/bin/bash # date 2019/2/15 # author zzh #检查文件夹存在 DIR=/root/文档/shellTest if [ ! -d $DIR ];then mkdir $DIR echo "文件夹不存在,已自动创建" else echo "文件夹已存在" fi #检查文件存在 FILE=/root/文档/shellTest/test.txt if [ ! -f $FILE ];then echo "OK" >> $FILE echo "文件不存在,已自动创建" else echo "文件已存在" fi #动态传参 NAME=$1 AGE=$2 echo "名字是 :$1,年龄是 :$2"
输出结果:
[root@localhost 文档]# sh shellTest.sh zzh 18 文件夹已存在 文件已存在 名字是 :zzh,年龄是 :18 [root@localhost 文档]#
Mysql备份脚本
#!/bin/bash # date 2019/2/15 # author zzh #声明变量 #备份时间,如:20190216 NOW=`date +%Y%m%d%H%M%S` #当前执行脚本的目录 project_path=$(cd `dirname $0`; pwd) #备份文件目录:参数指定,则将文件输出到指定目录,否则输出到当前目录 BASE_DIR=$1 if [ -z "$BASE_DIR" ];then echo -e " \033[31mUsage : { /bin/sh $0 \$DIR|\"here\"|help }\033[0m" exit 1 elif [ "help" = $BASE_DIR ];then echo "\$DIR :备份文件目录,指定参数后,将文件输出到指定目录。如:/bin/sh $0 /mnt/database/dbback/bak " echo "here :备份文件目录,输入\"here\",将文件输出到当前工作空间。如:/bin/sh $0 here" exit 1 elif [ "here" = $BASE_DIR ];then BASE_DIR=$project_path fi #备份文件夹名称,自动按当天时间生成 BAK_DIR=$BASE_DIR/`date +%Y%m%d` #数据库相关参数 #数据库名称 MYSQLDB=test #数据库登录名 MYSQLUSER=root #数据库登录密码,默认空 MYSQLPWD= #数据库命令程序位置 MYSQLCMD=/usr/bin/mysqldump #准备方法 #检查上一步命令是否执行成功 CHECK=false function checkSuccess(){ CHECK=false if [ $? -eq 0 ];then echo -e "[ \033[32m$TODO :完成\033[0m ]" CHECK=true else echo -e "[ \033[31m$TODO :失败\033[0m ]" exit 1 fi } #打印时间 #开始时间 function startTime() { echo "" echo "------------------$TODO 开始 `date +"%Y-%m-%d %H:%M:%S"`------------------" } #结束时间 function endTime() { echo "------------------$TODO 结束 `date +"%Y-%m-%d %H:%M:%S"`------------------" echo "" } #开始备份工作 #判断用户是否是ROOT用户 TODO=判断用户是否是ROOT用户 startTime if [ $UID -ne 0 ];then echo -e "[ \033[31m当前不是ROOT用户,请切换后执行本脚本\033[0m ]" exit 1 else echo -e "[ \033[32m当前用户 :ROOT\033[0m ]" fi endTime #准备备份目录 TODO=准备备份目录 startTime if [ ! -d $BAK_DIR ];then mkdir -p $BAK_DIR checkSuccess else echo -e "[ \033[32m备份目录 :就绪\033[0m ]" fi endTime #导出数据库 TODO=导出数据库 startTime $MYSQLCMD -u$MYSQLUSER -p$MYSQLPWD -d $MYSQLDB > $BAK_DIR/$MYSQLDB$NOW.sq checkSuccess endTime #压缩文件 TODO=压缩文件 startTime cd $BAK_DIR && zip -r $BAK_DIR/$MYSQLDB$NOW.zip $MYSQLDB$NOW.sq checkSuccess if [ $CHECK ];then rm -rf $BAK_DIR/$MYSQLDB$NOW.sq TODO=删除压缩前原文件 checkSuccess fi endTime echo "*******************************************************************************************" echo -e "*** \033[32m数据库备份完成,备份文件位置 :$BAK_DIR/$MYSQLDB$NOW.zip\033[0m ***" echo "*******************************************************************************************" echo "" #结束备份工作
输出结果:
[root@localhost shellTest]# sh backupDB.sh here ------------------判断用户是否是ROOT用户 开始 2019-02-16 15:31:41------------------ [ 当前用户 :ROOT ] ------------------判断用户是否是ROOT用户 结束 2019-02-16 15:31:41------------------ ------------------准备备份目录 开始 2019-02-16 15:31:41------------------ [ 准备备份目录 :完成 ] ------------------准备备份目录 结束 2019-02-16 15:31:41------------------ ------------------导出数据库 开始 2019-02-16 15:31:41------------------ Enter password: [ 导出数据库 :完成 ] ------------------导出数据库 结束 2019-02-16 15:31:43------------------ ------------------压缩文件 开始 2019-02-16 15:31:43------------------ adding: test20190216153141.sq (deflated 66%) [ 压缩文件 :完成 ] [ 删除压缩前原文件 :完成 ] ------------------删除压缩前原文件 结束 2019-02-16 15:31:43------------------ ******************************************************************************************* *** 数据库备份完成,备份文件位置 :/root/文档/shellTest/20190216/test20190216153141.zip *** ******************************************************************************************* [root@localhost shellTest]#
可以用来判断上一步命令执行是否成功 ↩︎
相关文章推荐
- shell脚本学习笔记(三)mysql与ARP表的绑定源码
- mysql 备份shell 脚本
- Shell脚本学习笔记-语法
- shell学习笔记(2) 一个简单的shell脚本程序
- 嵌入式开发之linux基础第七天学习笔记 shell脚本编程(二)
- shell脚本学习笔记(三)—— if、xargs、awk
- shell脚本编写学习笔记一
- Mysql自动备份数据库shell脚本
- shell脚本学习笔记之常见语法结构用法
- Mysql日常备份和增量备份SHELL脚本
- MySQL学习笔记20:数据备份与还原
- mysql 全部备份的shell脚本
- Zynq-Linux移植学习笔记之22-Linux应用程序调用shell脚本
- CentOS下mysql定时备份Shell脚本分享
- shell自动连接mysql后进行查询和自动备份脚本
- mysql学习笔记[日志][备份][表导入导出]
- shell脚本学习笔记(目录)
- Shell脚本学习笔记(七)--sed和awk
- 【旧代码】mysql备份的shell脚本
- 两个shell备份mysql的脚本