我想测试一个网站,直到它返回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]")
答案 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。