enter code here我编写了一个脚本,将数据库从指定的sql文件导入到特定的架构中。我使用管道查看器查看进度。当错误发生时,负载制动器。因此,我尝试创建一个新函数,以便在发生错误时尝试加载3次。(这很好)有时在加载完成100%之后会发生错误,所以在这种情况下我想忽略这个错误。有方法知道错误发生时所达到的进度百分比吗?
try_Load_date_schema(){
var=$(date +%Y-%m-%d -d "$1").sql;
count=0;
echo $var;
cddumps;
echo "starting load ${var}" $2;
while true; do
loadSucceeded=1;
echo "attempt: "$((count+1));
dropSchema $2;
createSchema $2;
pv $var | mysql --defaults-extra-file=~/localhost.mysql.conf -h 127.0.0.1 -u root --default-character-set=utf8 $2 || loadSucceeded=0;
if(("$loadSucceeded" == 0));then # i need to check the progress percentage here
echo "Loading failed"
if (("$count" == 2));then
echo " failed to load db with 3 attempts"
break;
else
echo "try loading again ..."
((count++))
fi
else
echo "load Succeeded"
break;
fi
done
echo "ending load";
}我想把屏幕截图中的情况考虑为已完成,并且不再加载
发布于 2021-11-22 16:42:20
有方法知道错误发生时所达到的进度百分比吗?
我们可以捕获变量中的最终百分比,并对100%进行测试,因此,使loadSucceeded只取决于此,如您所需,如下所示:
pct=$({ pv $var | mysql --defaults-extra-file=~/localhost.mysql.conf -h 127.0.0.1 -u root --default-character-set=utf8 $2; } |& tee /dev/tty | grep -o '[0-9]\+%' | tail -1)
[ $pct == 100% ] || loadSucceeded=0https://stackoverflow.com/questions/70013912
复制相似问题