Bash curl HTTP状态代码作为变量

时间:2018-06-28 07:49:16

标签: bash curl

我打了个电话:

curl --silent --connect-timeout 8 --output /dev/null http://0.0.0.0:5000/twi?c0=24 -I -w "%{http_code}\n" ``

它工作正常,如果成功,则返回200。我想在一个变量中使用状态码并尝试:

curl --silent --connect-timeout 5 --output /dev/null http://0.0.0.0:5000/twi?c0=24

然后:

curl_status=$?
echo $curl_status

此调用效果很好,但$ 0表示$ curl_status。

我尝试过:

curl_status=$(curl --silent --connect-timeout 5 --output /dev/null http://0.0.0.0:5000/twi?c0=24)
echo $curl_status

结果相同:将执行调用,但$ 0表示$ url_status。

为什么我不将第一次调用的http_code放入变量中以在if语句中使用? 我在这里阅读了许多文章,但没有成功的解决方案。

2 个答案:

答案 0 :(得分:0)

尝试

curl_status=`curl --silent --connect-timeout 8 --output /dev/null http://0.0.0.0:5000/twi?c0=24 -I -w "%{http_code}\n"`

如果要遵循重定向,请使用-L

答案 1 :(得分:0)

借助Biffen的链接和https://coderwall.com/p/taqiyg/use-http-status-codes-from-curl的示例 我来到

curl_status=$(curl -s -o /dev/null -w '%{http_code}' --connect-timeout 3 http://0.0.0.0:5000/twi?c0=24+91+24+91+24+91+24+91)``

感谢您的帮助。