【问题标题】:while loop script to retry and end if it meets conditionwhile循环脚本在满足条件时重试并结束
【发布时间】:2019-12-02 00:33:04
【问题描述】:

我正在尝试编写一个简单的 shell 脚本来连续调用(curl)一个 API,检索结果,然后执行我的响应。我使用整个循环条件的原因是因为我正在对正在运行的作业进行 API 调用。我期待的三个响应是 SUCCESS、FAILURE 或“null”(工作仍在进行中)。当我在作业失败或成功时执行它时,我的脚本工作。

#!/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 作业已完成,它也会不断地执行等待条件。如果我在单独的命令行中执行我的脚本,我会得到正确的(成功或失败)条件,但我的脚本的现有执行仍在执行等待条件。

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

【问题讨论】:

    标签: shell while-loop


    【解决方案1】:

    将 RESULT 写入循环:

    #!/bin/bash
    
    while true
    do
      RESULT=`(curled API response - expecting "FAILURE", "SUCCESS", or null)`
    

    【讨论】:

      猜你喜欢
      • 2021-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-21
      • 1970-01-01
      • 2023-01-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多