【发布时间】: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