Bash   发布时间:2022-05-13  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在bash脚本中捕获mysqldump错误大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我目前正在尝试编写一个脚本来备份我的几个站点及其数据库.

一切都运行良好,但我正在尝试对我的日志有点聪明 – 基本上,目前它将尝试运行mysqldump并将回应成功或失败.

我宁愿做的是输出实际的错误而不仅仅是一个无用的’MysqLdump Failed’消息.我已经浏览了一下,我几乎可以这样做,我想要使用“2> log_file.txt”

我原来的命令:

@H_130_13@mysqLdump -u asdsa --password=$DB_PASS $db_name > $MysqL_LOCATION if [ "$?" -eq 0 ] then echo -e "MysqLdump successfully finished at $(date +'%d-%m-%Y %H:%M:%s')"$'\r' >> "$LOG_LOCATION" else echo -e "MysqLdump Failed at $(date +'%d-%m-%Y %H:%M:%s')"$'\r' >> "$LOG_LOCATION" fi

所以我添加了“2> $LOG_LOCATION |”抓住实际的错误.所以我更新的命令看起来像这样(这个添加在第一行):

@H_130_13@mysqLdump -u $DB_USER--password=$DB_PASS $db_name 2> $LOG_LOCATION | > $MysqL_LOCATION if [ "$?" -eq 0 ] then echo -e "MysqLdump successfully finished at $(date +'%d-%m-%Y %H:%M:%s')"$'\r' >> "$LOG_LOCATION" else echo -e "MysqLdump Failed at $(date +'%d-%m-%Y %H:%M:%s')"$'\r' >> "$LOG_LOCATION" fi

这会将错误输出到我的日志文件中,但会覆盖其中的任何内容.这也意味着我的错误检查if语句没有收到错误.

有什么方法可以:

a)从MysqLdump函数中捕获实际错误(即该用户拒绝访问)
b)将此错误附加到现有错误日志
C)在输出上述错误后还附加成功或失败消息

任何帮助都会很棒!

谢谢!

解决方法

这是一个错误 – 管道字符是多余的,并且将含义从简单的重定向更改为管道.

无论如何,使用if的正确方法是运行要作为条件检查其成功的实际命令.

if MysqLdump -u "$DB_USER" --password="$DB_PASS" "$db_name" 2>"$LOG_LOCATION" >"$MysqL_LOCATION"
then
    echo -e "MysqLdump successfully finished at $(date +'%d-%m-%Y %H:%M:%s')"$'\r' >> "$LOG_LOCATION"
else
    echo -e "MysqLdump Failed at $(date +'%d-%m-%Y %H:%M:%s')"$'\r' >> "$LOG_LOCATION"
fi

使用printf over echo -e可能会更好,但我不会改变这些部分.

大佬总结

以上是大佬教程为你收集整理的在bash脚本中捕获mysqldump错误全部内容,希望文章能够帮你解决在bash脚本中捕获mysqldump错误所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: