regex - 如何检查 curl 的 http_code 是否在 200 和 299 之间

标签 regex linux bash curl

我想测试一个网站,直到它返回 200 到 299 之间的 http_code:

  until [[ $(curl --silent -o /dev/null -w %{http_code} -u admin:admin http://mywww:8080/api/v1) = "2[0-9][0-9]" ]] ;do
    printf '.'
    sleep 5
done

但即使 curl 返回 202,它也会继续循环。 在与正则表达式进行比较时,我尝试用 -eq 替换 = 但随后它会抛出错误

[[: 2[0-9][0-9]: syntax error: invalid arithmetic operator (error token is "[0-9][0-9]")

最佳答案

试试这个:

until [[ $(curl -I --silent -o /dev/null -w %{http_code} -u admin:admin http://mywww:8080/api/v1) =~ 2[0-9][0-9]  ]] ;do
    printf '.'
    sleep 5
done

-I:做一个head而不是get。如果不被网络服务器阻止,效率会更高。

=~ 2[0-9][0-9]:允许在 if 语句中使用正则表达式的 Equal Tilde 运算符。

旁注:如果您不想使用等号波浪号,您应该去掉模式中的引号。

关于regex - 如何检查 curl 的 http_code 是否在 200 和 299 之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42300053/

相关文章:

c++ - 如何获取系统调用的参数列表及其类型?

linux - xhci-hcd xhci-hcd.0.auto : xHCI host not responding to stop endpoint command

c# - Linux 锁定/解锁事件处理

regex - 如何从 Linux 'find' 命令的输出中排除与特定模式匹配的目录?

linux - 用数字 bash 变量算术?

bash - 如何在设置了多个环境变量的 bash 中启动命令

PHP 正则表达式替换为原始值

Javascript RegExp + 单词边界 + unicode 字符

java - 正则表达式用于屏蔽 Java 中除前两个和最后两个字符之外的字符

javascript - 电话号码的正则表达式(不包括特殊字符)