linux shell 判断是否执行成功

使用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 是否有报错提示?

阅读 9.3k
2 个回答

可以在mysqldump命令中添加一个错误输出重定向到文件,如mysqldump xx oo 2>err.log|gzip >...
然后在if语句里判断err.log是否为空[ -s err.log ],为空则表示成功,不为空则为失败。

我一般会写一个简单的 php 或 python 脚本检查数据库,exit 不同的值。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题