使用linux的shell脚本来批量备份数据库,但是数据库并不一定是存在的。而执行会导致报错:
mysqldump -u$DbUser -p$DbPwd --master-data $dbname | gzip > $filepath
if [ $? -eq 0 ]
then
echo "[$dbname] $filepath success!" >> $LogFile
else
echo "[$dbname] $filepath Error Failed" >> $LogFile
rm -rf $filepath
fi
当数据库是不存在的时候,使用 $?
捕获到的还是 0
导致备份提示成功。
这里是如何判断数据库 mysqldump 是否有报错提示?
可以在mysqldump命令中添加一个错误输出重定向到文件,如
mysqldump xx oo 2>err.log|gzip >...
然后在if语句里判断err.log是否为空
[ -s err.log ]
,为空则表示成功,不为空则为失败。