在此寻求 bash 专家的帮助。
我想做的事情可能非常简单,但我在谷歌中找不到任何可以清楚解释要做什么的内容。脚本中还有很多其他内容,但这是我需要帮助的 block :
# import the extracted sql into mysql
for sql_file in $(find -maxdepth 1 -type f -iname "*$1*.sql" | sort); do
echo "Importing: $sql_file"
if mysql -u [USER] -p[PASSWORD] -h [HOST] $db < $sql_file
then
echo "Database $sql_file imported successfully. $db has been updated"
else
echo "ERROR: Database importing $sql_file into $db"
fi
done
如果您看不出来,我基本上是在尝试将多个 db.sql 文件导入循环内的给定目标。我想要做的是添加 mysql 命令的输出以显示此步骤中可能生成的任何 MySql 错误。此输出将直接出现在这一行之后:
echo "ERROR: Database importing $sql_file into $db"
如果这一步导入失败,我希望它输出类似这样的内容,但不退出脚本:
MySQL Import Failed: [Output what mysql would output to command line right here.]
这将告知执行导入的人员究竟出了什么问题,以便他们可以准确地告诉开发人员他们遇到了什么。
我不知道这是否太模糊,但是任何帮助将不胜感激。
最佳答案
如何生成单独的日志和错误文件,如下所示:
for sql_file in $(find -maxdepth 1 -type f -iname "*$1*.sql" | sort); do
echo "Importing: $sql_file"
log=$sql_file.log
err=$sql_file.err
if mysql -u [USER] -p[PASSWORD] -h [HOST] $db < $sql_file > $log 2> $err
then
echo "Database $sql_file imported successfully. $db has been updated"
else
echo "ERROR: Database importing $sql_file into $db"
echo "<<<<<"
cat $err
echo ">>>>>"
fi
done
通过这种方式,您可以跟踪每个脚本的处理情况。对于您原来的问题,只需生成错误文件就足够了。如果需要,您甚至可以在 cat
之后将其删除。
关于mysql - 在bash脚本中输出MySQL进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19938901/