mysql - Linux Shell 脚本在执行 mysql 脚本 shell 后捕获退出代码

标签 mysql linux bash shell

我需要在 linux 中自动执行 mysql 脚本。如果一个 sql 脚本失败,则不应继续执行。它应该来自脚本。我正在使用 ${?} 来测试退出状态。但它总是返回零状态,尽管脚本失败了。我认为它返回零是因为 mysql 命令成功执行,即使脚本因有效错误而失败。请帮我做同样的事情。另外我想知道如果任何脚本因有效错误而失败时如何回滚。请检查我的代码如下

#!/bin/bash
# Load the script and env configuration
. /home/base/scripts/conf/sql.conf
if ls ${HOME_PATH}/sql_actual/*.sql &> /dev/null; then
   for file in ${HOME_PATH}/sql_actual/*.sql
   do
       echo ${file}
       s=${file##*/}
       var_log=${s%.sql}
       echo ${var_log}
     mysql -u ${DB_USER} -p${DB_PASSWORD} -h ${DB_HOST} --default-character-set=utf8 ${DB_SCHEMA} < $file --silent --force -b 2>${HOME_PATH}/sql-logs/${var_log}.log
         if [ ${?} -ne 0 ]; then
        echo "${var_log}.sql SQL Script Failed to execute"
        exit ${?}
        else
        echo -e "${var_log}.sql" SQL Script executed successfully
        fi
done
else
    echo "files do not exist"
fi

最佳答案

mysql -u ${DB_USER} -p${DB_PASSWORD} -h ${DB_HOST} --default-character-set=utf8 ${DB_SCHEMA} < $file --silent --force -b 2>${HOME_PATH}/sql-logs/${var_log}.log

exitcode=$?

if [ $exitcode -ne 0 ]; then

关于mysql - Linux Shell 脚本在执行 mysql 脚本 shell 后捕获退出代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25135661/

相关文章:

linux - linux/unix系统中管道符/管道符(竖线字符 "|")的可执行文件是什么

linux - 使用linux比较解析的数据以及在 ' if '或while循环中使用该比较

bash - 为什么我的 expect 脚本在第 1 行失败?

php - MySQL 查询在 3 列中搜索 MATCH?

php - 根据距离范围计算速率

MySQL数据类型计算字段

linux - 如何将通配符参数传递给 bash 文件

mysql - 如何始终将值 1 分配给创建的 LAST "row_id"

linux - 运行影响父 shell 的 bash 命令

git - 无法安装 docker