我正在使用 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 的文件。您可能还想使用
-s
withcurl
来使其静音。