Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 在Unix shell脚本中重试以下代码段的逻辑_Bash_Unix - Fatal编程技术网

Bash 在Unix shell脚本中重试以下代码段的逻辑

Bash 在Unix shell脚本中重试以下代码段的逻辑,bash,unix,Bash,Unix,由于以下错误,我们有一个unix作业总是失败 无法执行os命令 在第二次或第三次运行中重试后,它成功地执行了 所以现在我想对下面的代码重试逻辑最多3次,请给出下面代码的示例 若在第一次运行中执行成功,则应退出循环,否则应继续重试3次。然后,它应该退出循环并处理剩余的代码 sqlplus -s / <<EOF set serveroutput on size 999999 set feed off set term off

由于以下错误,我们有一个unix作业总是失败

无法执行os命令

在第二次或第三次运行中重试后,它成功地执行了

所以现在我想对下面的代码重试逻辑最多3次,请给出下面代码的示例

若在第一次运行中执行成功,则应退出循环,否则应继续重试3次。然后,它应该退出循环并处理剩余的代码

sqlplus -s / <<EOF
        set serveroutput on size 999999
        set feed off
        set term off
        spool ../logs/$PROGRAM.log3
        execute $PROGRAM;
EOF
 

sqlplus-s/您可以这样做

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
iteration=0
极限=3
等待的秒数=10
而[[$iteration-le$limit]];
做

sqlplus-s/您做了哪些研究?你到底被困在哪里了?非常感谢Roberto的快速帮助我是Unix的初学者,我将把这段代码放在我的脚本中并让你知道here@vijay非常感谢。我更新了答案,对逻辑表达式使用相同的语法(-eq,-lt,-le…)