您好!现在我的脚本在下面工作,但不是我想要的方式。首先,我必须为一段代码执行“set + e”,否则脚本将在第一个错误时退出。
有时,当我的脚本运行时,他们的报告还没有准备好。因此,没有文件可以从$ temp_dir目录移动。这是退出状态1错误。
如何使脚本的行为如下:
#! /bin/bash
...
set +e
java Autoingestion autoingestion.properties ${VENDOR_ID} Sales Daily Summary ${REPORT_DATE}
mv ${BASE_FILENAME} ${temp_dir}
# File or directory not found from moving, so exit status should be 1.
echo "Exit status " $?
while [[ $? -ne 0 ]] & [[ ${RETRY} -lt 6 ]]; do
sleep 1200
printf "\n"
echo "Retrying download attempt #${RETRY} out of 5"
java Autoingestion autoingestion.properties ${VENDOR_ID} Sales Daily Summary ${REPORT_DATE}
mv ${BASE_FILENAME} ${temp_dir}
if [ $? -eq 0 ]; then
echo "Download retry successful!"
mv ${BASE_FILENAME} ${temp_dir}
break; # Skip entire loop
fi
let RETRY=RETRY+1
done
set -e
printf "\n"
基本上,这是试图说'如果第一次尝试失败,等待20分钟再试一次(最多5次)。
非常感谢您的意见。
答案 0 :(得分:0)
这应该是解决方案:
while [ $counter -lt 11 ]; do
download the report
if [ -f $BASE_FILENAME ]; then
break;
else
echo "Report unavailable. Retrying in 20 minutes"
increase counter value by 1
fi
done