Shell 脚本优化:带错误重试机制的函数代码示例
zxpd() { ' 创建计数器并初始化为0 local zxpdml="$"" local jsq=0 local error_file=$(mktemp)
' 循环执行指令,最多重试3次
while [ $jsq -lt 4 ]; do
' 执行指令并隐藏报错信息
$zxpdml 2>"${error_file}"
if [ $? -eq 0 ]; then
' 如果执行成功,则跳出循环
echo 0 > /gancm/log/install.log
break
else
' 如果执行失败,则重试
let jsq++
if [ $jsq -ge 4 ]; then
' 如果重试次数超过3次,则输出异常信息并跳出循环
echo 1 > /gancm/log/install.log
echo -e "${RED}
指令执行异常${RES}" if [ -s "$error_file" ]; then echo -e "${RED}运行日志(请把这一段输出提交给作者)${RES}:" cat "$error_file" fi rm -rf "$error_file" break fi ' 输出重试信息 echo -e "${RED}指令执行错误,重新执行指令:${YELLOW}${zxpdml} ${RED}第${YELLOW}${jsq}${RED}次${RES}" fi done
' 如果计数器小于0,则输出指令执行错误
if [ $jsq -lt 0 ]; then
echo 2 > /gancm/log/install.log
echo "${RED}指令执行错误${RES}"
fi
}
原文地址: http://www.cveoy.top/t/topic/oQeX 著作权归作者所有。请勿转载和采集!