Curl 中的变量和标准输出

Curl 中的变量和标准输出

我正在使用 Ubuntu 16.04。

是解释器。

我正在尝试找到一种方法来测试在将 curl 数据保存到文件之前对主机的 curl 请求是否返回成功代码 (200)。

这是我目前能想到的最好的代码。

flag_output=$(curl -O -w %{http_code} "https://api.genericpath")

我计划编写一个如果标志等于 200 则保存到文件。

这里的问题是 curl 自动保存到文件。

我尝试了管道/grep,但似乎也不起作用。

我是否必须使用 --dump-header 将标头定向到文件,然后打开文件并测试 http 代码是否为 200?似乎效率很低,特别是如果我正在迭代 curl。

答案1

以下是基于您已有内容的解决方法:

$ CONTENT=$(curl -w %{http_code} https://git.io)
$ [ $(tail -1 <<<$CONTENT) -eq 200 ] && head -n -1 <<<$CONTENT > output

为了满足您在评论中提出的问题:

$ [ $(tail -c -4 <<<$CONTENT) -eq 200 ] && head -c -4 <<<$CONTENT > output

怎么了:

  • 内容包括最后一行的 HTTP 代码。

  • 第二行表示if最后一行是 200,将其从其他行中排除,并将剩余内容重定向到名为 output 的文件。

  • 您可能还想使用-swithcurl来使其静音。

相关内容