在while循环中使用curl命令

在while循环中使用curl命令,curl,while-loop,do-while,Curl,While Loop,Do While,我是新来的,所以请容忍我。 我试图在whiledo循环中使用curl命令,但收效甚微。 我可以在循环外使用curl命令来获得响应,但是当它命中while循环时,它会忽略curl命令,并坚持文件的第一个输出,完成后不会中断循环。 我之前运行的命令输出到web页面,值为“2”表示它已完成,值为“0、1或3”表示它尚未完成或出现错误等。 由于完成“2”的返回可能需要一些时间,因此循环可能需要一些时间。 值“0,1,2,3”为硬编码,无法更改。 代码确实有效,因为如果您取消程序运行,文件确实会更新,但在

我是新来的,所以请容忍我。 我试图在whiledo循环中使用curl命令,但收效甚微。 我可以在循环外使用curl命令来获得响应,但是当它命中while循环时,它会忽略curl命令,并坚持文件的第一个输出,完成后不会中断循环。 我之前运行的命令输出到web页面,值为“2”表示它已完成,值为“0、1或3”表示它尚未完成或出现错误等。 由于完成“2”的返回可能需要一些时间,因此循环可能需要一些时间。 值“0,1,2,3”为硬编码,无法更改。 代码确实有效,因为如果您取消程序运行,文件确实会更新,但在循环过程中无法看到。我被困在循环中,无法摆脱它,因为它不会重新访问网页以查找“2” 有什么想法吗 下面是一段简短的代码

curl  --location http://$host_name/config-builder-test-app/jobStateResolver?jobId=$jobid > ./jobstate.txt

round=`grep -E "1|0|3" jobstate.txt`
while [ $round ]
do
curl  --location http://$host_name/config-builder-test-app/jobStateResolver?jobId=$jobid > ./jobstate.txt

echo "Waiting for confirmation of the completed build:";
sleep 5
done
echo "Successful build for $inputb ID $ID";

这是因为“round”变量在进入while循环之前只更新了一次。在运行curl之后,您需要在while循环中更新它以获得正确的结果。

通常curl不能用于循环构造。每次迭代都会使用另一个HTTPD会话。但是,“旧”会话堆栈上的数据尚未发布。 取消设置通道变量以释放堆栈将不起作用,因为HTTPD会话的数量是坏家伙。我们使用1个主HTTPD,生成4个子进程。因此,毛发使用在5次迭代后,循环将折叠

因此,这个问题有两种解决方案。 要么等待足够长的时间,等待“旧”HTTPD会话结束,通常为秒。 或者足够快,在“旧”之后进行“新”迭代,通常是毫秒

在处理之前,我们将所有CURL输出连接到一个内存数组中