你好!现在我下面的脚本可以工作,但不是我想要的方式。首先,我必须对代码块执行“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 次)。
非常感谢您的意见。