【发布时间】:2019-04-19 15:48:12
【问题描述】:
我正在使用 cURL 在 bash 脚本中检查链接的正常运行时间,如下所示:
curl -Lo /dev/null --silent --head --write-out '%{http_code}' $link
以link="http://deadlink/" 为例。
它返回 000 因为它是一个死链接,这很好,但是每当我从 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”放入变量中?
【问题讨论】:
-
顺便说一句,这在BashFAQ #2 中进行了讨论。
-
顺便说一句,如果你只想要一个的输出并且不需要区分特定的不成功的HTTP状态值,考虑使用
--fail这样curl会如果 HTTP 状态为 400 或更高,请将$?设置为 22。
标签: bash curl error-handling