我需要在 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/