while循环脚本重试并在满足条件时结束

时间:2019-07-23 22:30:50

标签: shell while-loop

我试图编写一个简单的Shell脚本来连续调用(卷曲)API,检索结果,然后执行我的响应。我使用整个循环条件的原因是因为我正在对正在运行的作业进行API调用。我期望的三个响应是“成功”,“失败”或“空”(作业仍在进行中)。在作业失败或成功时执行脚本时,脚本就会起作用。

#!/bin/bash

RESULT=`(curled API response - expecting "FAILURE", "SUCCESS", or null)`


while [ $RESULT ]
do
    if [ "$RESULT" == "FAILURE" ]
    then
        echo "FAILURE in Build"
        break
    elif [[ "$RESULT" == "SUCCESS" ]]
    then
        echo "SUCCESS in Build"
        break
    elif [[ "$RESULT" == *"null"* ]]
    then
        echo "Waiting for Test/Build to Complete:"
        sleep 10
        continue
    else
        echo "NO Response, please check API"
        break
    fi
done

当API作业正在运行时,我在执行脚本时确实得到了“等待”条件,但是,即使API作业完成了,它也会不断执行等待条件。如果我在单独的命令行中执行脚本,则会得到适当的(成功或失败)条件,但是脚本的现有执行仍在执行等待条件。

基本上,我希望脚本从头开始重试并检查所有条件。我在这里想念什么?

1 个答案:

答案 0 :(得分:1)

将RESULT写入循环:

#!/bin/bash

while true
do
  RESULT=`(curled API response - expecting "FAILURE", "SUCCESS", or null)`