bash - 如何在 CURL shell 脚本中捕获超时/错误?

标签 bash http shell curl

我想向 URL 发出 cURL GET 请求,并根据返回的 HTTP 代码决定是否对返回的 HTTP 数据执行某些操作。

例如,如果通过 cURL 的某个 url 请求的 HTTP 代码有效(不是超时或错误),则将请求返回的数据保存在我的系统中的某个位置。

我怎样才能真正“捕获”返回的 HTTP 代码(或超时)并根据它做出决定?

最佳答案

执行以下作为 script.sh http://www.google.com/
-D - 将 header 转储到文件
-o - 将响应写入文件
-s - 保持沉默
-w - 显示指定变量的值

#!/bin/bash

RESPONSE=response.txt
HEADERS=headers.txt

status=$(curl -s -w %{http_code} $1 -o $RESPONSE)

# or
#curl -s -D $HEADERS $1 -o $RESPONSE
#status=$(cat $HEADERS | head -n 1 | awk '{print $2}')

echo $status

使用 $status$RESPONSE 进行进一步处理。

关于bash - 如何在 CURL shell 脚本中捕获超时/错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18258804/

相关文章:

http - URI、URL 和 URN 有什么区别?

delphi - SOAP 消息 - 在 http header 中添加身份验证

c# - 无法使用 GET 请求发送具有此动词类型的内容正文

bash - 如何使用 Bash 抑制命令的所有输出?

linux - 从 bash 脚本替换文件中的字符串

bash - 如何在 Tcl 或 Expect 命令中为带空格的密码或文件名包含双引号?

c# - 检索可执行信息

regex - 仅当具有给定名称的 Docker 容器不存在时,如何执行 Bash 命令?

java - 每 1 分钟在 for 循环中调用一个命令

linux - 如果从 rc.local 而不是 SSH 调用,为什么这个 shell 不起作用?