循环 bash 脚本,直到 cURL 响应不等于字符串

Posted

技术标签:

【中文标题】循环 bash 脚本,直到 cURL 响应不等于字符串【英文标题】:Loop bash script until cURL response doesn't equal string 【发布时间】:2016-05-09 01:53:38 【问题描述】:

我正在尝试循环一个 bash 脚本(下面的 cURL),直到我的远程 php 脚本不等于failure。我尝试了以下方法,当$fileName 存在时它可以工作。但是当它返回failure 时不会循环。

我的 PHP:

<?php
$videoFile = $_GET["name"] . ".mp4";
if (file_exists($videoFile)) 
    echo "success";
 else 
    echo "failure";

?>

Bash 命令:

until $(curl --output /dev/null --silent --head --fail "my-remote-php-script.php"); do
    printf '.'
    sleep 1
done

【问题讨论】:

【参考方案1】:

这应该可行:

while [ "$(curl -s 'http://your-url.php')" == "failure" ]; do
  echo -n '.'
  sleep 1
done

$() 将 curl 放置在子 shell 中。将来自您的 php 脚本的结果字符串与 failure 进行比较。

【讨论】:

【参考方案2】:

试试这个:

url="http://server.tld/foo.php"
until curl -sf "$url"; do echo -n "."; sleep 1; done

【讨论】:

以上是关于循环 bash 脚本,直到 cURL 响应不等于字符串的主要内容,如果未能解决你的问题,请参考以下文章

Bash CURL GET 请求输出到单个 JSON 文件,包括服务器响应和 CURL 信息

怎么判断curl调用接口返回成功:响应码

在bash中检查XML的内容

shell脚本之测试某网段内主机连通性

为什么bash动态变量和字符串串联会扰乱/覆盖我的循环输出?

HTTP入门(一):在Bash中curl查看请求与响应