在这里寻求bash专家的帮助。
我想要做的事情可能非常简单,但我在谷歌中找不到任何明确解释该怎么做的事情。脚本中还有很多其他内容,但这是我需要帮助的块:
# 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.]
这会通知执行导入的人,究竟出了什么问题,以便他们可以告诉开发人员他们遇到了什么。
我不知道这是否太模糊,但任何帮助都会非常感激。
答案 0 :(得分:0)
如何生成单个日志和错误文件如下:
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
后删除它。