请帮助我解决一个unix shell脚本要求。
我们有一个unix作业,由于以下错误而总是失败
unable to execute os command
,在第二次或第三次重试后,它成功执行。
所以现在我想对下面的代码重试逻辑最多3次,请给出下面的代码示例。
如果首次运行执行成功,则应退出循环,否则应继续重试3次。然后,它应该退出循环并处理剩余的代码。
sqlplus -s / <<EOF
set serveroutput on size 999999
set feed off
set term off
spool ../logs/$PROGRAM.log3
execute $PROGRAM;
EOF
答案 0 :(得分:1)
您可以这样做
iteration=0
limit=3
seconds_in_wait=10
while [[ $iteration -le $limit ]];
do
sqlplus -s / <<EOF
whenever sqlerror exit 99;
set serveroutput on size 999999
set feed off
set term off
spool ../logs/$PROGRAM.log3
execute $PROGRAM;
EOF
if [[ $? -eq 99 ]];
then
if [[ $iteration -eq $limit ]];
then
echo "Maximum times allowed - Error"
exit 2;
else
iteration = $(expr $iteration + 1)
sleep $seconds_in_wait
fi
else
iteration=$(expr $limit + 1)
fi
done