mysql - 如果命令失败,我如何捕获命令的输出并将其发送到函数?
问题描述
我没有在我的 shell 脚本中使用 set -e,而是使用函数(事件)处理每个特定错误。在这种特殊情况下,如果失败,我正在尝试(插入数据库并)从 mysql 捕获任何错误。然后将其直接发送到我的事件函数中,以便我可以将其存储在日志文件中。
mysql $schema < 'structure_dump.sql' || event "8" "$schema structure insert failed:"
我认为这样做会捕获输出,但是当失败时我的错误变量显示为空,即使我仍然在我的屏幕上收到 mysql 错误消息。
err=$(mysql $schema < 'structure_dump.sql') || event "8" "$schema structure insert failed: $err"
有可能这样做还是我以错误的方式思考它?
解决方案
MySQL 应该报告错误,stderr
但您只是在捕获stdout
. stderr
将(描述符 2)重定向到stdout
(描述符 1)
我相信这应该对你有用:
# Push stderr into stdout in your output capture
err=$(mysql $schema < 'structure_dump.sql' 2>&1) || event "8" "$schema structure insert failed: $err"
推荐阅读
- kotlin - 将 Kotlin TornadoFx 构建为 Windows 的 exe
- typescript - 在 Typescript 中引用泛型类型的泛型类型?
- opencv - 如何从opencv solvepnp获取相机位置以实现统一
- c++ - 使用工厂模式的地图泄漏内存,解决方案?
- scala - Gatling - 无法解析为正确的 Uri,缺少方案
- keycloak - Keycloak Admin CLI - 使用 JSON 文件更新领域
- javascript - 在表单中写入时如何停止 preventDefault()
- java - 如何从目录java列出目录项
- c# - 将 UAT 和 Prod ASP 核心 Web 应用程序部署到 iis
- android - Android 构建失败,无法解决:com.squareup.retrofit2:convertor-gson:2.7.1