如何检查curl的http_code是否介于200和299之间

时间:2017-02-17 14:13:21

标签: regex linux bash curl

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

  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]:语法错误:算术运算符无效(错误标记为" [0-9] [0-9]")

1 个答案:

答案 0 :(得分:4)

试试这个:

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:做一个头而不是得到。如果不被网络服务器阻止,那就更有效了。

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

旁注:如果你不想使用相同的波形,你应该丢失模式上的qoutes。