在bash脚本中调查cURL返回000错误代码的原因

时间:2019-04-19 15:48:12

标签: bash curl error-handling

我正在使用cURL在bash脚本中检查链接的正常运行时间,如下所示:

curl -Lo /dev/null --silent --head --write-out '%{http_code}' $link

例如link="http://deadlink/"

它返回000 cos,这是一个无效的链接,但是很好,但是每当我从cURL收到000响应时(因为可能有很多原因),我想应用一些逻辑来找出那里发生的事情。例如,是因为连接被拒绝,超时,ssl故障等吗?

我认为最好的方法是通过某种方式将错误代码直接与cURL隔离,并使用IF语句对其进行测试。那就好了,所以我要从cURL本身 提取错误代码的最接近的方法是:

failState=$(curl -Ss $link; echo "error code is $?" )
echo $failState

很好地返回:

curl: (6) Could not resolve host: brokenlink
error code is 6

如何将“ 6”放入变量?

1 个答案:

答案 0 :(得分:1)

您可以在将curl的输出分配给$?之后立即将failState分配给另一个变量。

failState=$(curl -Ss "$link") exitCode=$?