0

在这里寻求 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.]

这将告知执行导入的人究竟出了什么问题,这样他们就可以准确地告诉开发人员他们遇到了什么。

我不知道这是否太模糊,但任何帮助将不胜感激。

4

1 回答 1

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

于 2013-11-13T00:52:12.020 回答