Regex 如何检查旋度';s的http_代码介于200和299之间
我想测试一个网站,直到它返回的http_代码介于200和299之间:Regex 如何检查旋度';s的http_代码介于200和299之间,regex,linux,bash,curl,Regex,Linux,Bash,Curl,我想测试一个网站,直到它返回的http_代码介于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。 在与regex进行比较时,我尝试用-eq替换=但它抛出了一个错误 [:2[0-9
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。
在与regex进行比较时,我尝试用-eq替换=但它抛出了一个错误
[:2[0-9][0-9]:语法错误:算术运算符无效(错误标记为“[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。如果不被Web服务器阻止,效率会更高
=~2[0-9][0-9]
:允许在if语句中使用正则表达式的相等波浪线运算符
旁注:如果您不想使用等分瓷砖,则应丢失图案上的qoutes。尝试以下方法:
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。如果不被Web服务器阻止,效率会更高
=~2[0-9][0-9]
:允许在if语句中使用正则表达式的相等波浪线运算符
旁注:如果您不想使用等号,您应该丢失模式上的qoutes。不确定其余命令,但对于正则表达式匹配,请使用
=~2[0-9][0-9]
进行模式匹配,您不能引用右侧。对于其余命令,不确定,但对于正则表达式匹配,请使用=~2[0-9][0-9]
对于模式匹配,您不能引用右侧。您实际上不需要正则表达式匹配,=
可以很好地进行模式匹配,但必须取消对模式的引用。感谢您提供的信息,更新了答案。您不需要正则表达式匹配,=
可以很好地进行模式匹配,但模式必须是正确的未引用。谢谢你的信息,更新了答案。