如何从可执行bash脚本中的curl获得正确的响应?
问题描述:
我有一个超级简单的bash脚本...如何从可执行bash脚本中的curl获得正确的响应?
#!/bin/bash
result=$(curl -i -H "Accept: application/json" -H "Content-Type: application/json" https://jsonplaceholder.typicode.com/posts/1)
我试图调用REST API和解析响应。
当我执行这个脚本,我得到这个反应,这是不是我想要的......
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
146 292 146 292 0 0 1106 0 --:--:-- --:--:-- --:--:-- 6790
当我直视着我的终端上运行curl命令,我得到这个响应,这是什么我想...
HTTP/1.1 200 OK
Date: Fri, 20 Oct 2017 16:07:06 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 292
Connection: keep-alive
Set-Cookie: __cfduid=da76c27cec17567gFH34bd0e2a0ae0ff1508515626; expires=Sat, 20-Oct-18 16:07:06 GMT; path=/; domain=.typicode.com; HttpOnly
X-Powered-By: Express
Vary: Origin, Accept-Encoding
Access-Control-Allow-Credentials: true
Cache-Control: public, max-age=14400
Pragma: no-cache
Expires: Fri, 20 Oct 2017 20:07:06 GMT
X-Content-Type-Options: nosniff
Etag: W/"124-yiKdLzqO5gBghyTrcdJ8Yq0LGnU"
Via: 1.1 vegur
CF-Cache-Status: HIT
Server: cloudflare-nginx
CF-RAY: 3b0d3a6bda04138f-LHR
{
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
}
有人能指出我错过了什么,请:)
答
你需要引用的结果,当你想将其保存到一个变量:
#!/bin/bash
result="$(curl -i -H "Accept: application/json" -H "Content-Type: application/json" https://jsonplaceholder.typicode.com/posts/1)"
echo the result is: "${result}"
如果要保留多行,双引号是很重要的。
答
要获得curl的实际输出,您可以直接在脚本中使用该命令。或者你可以设置终点在一个变量...
#!/bin/bash
result=https://jsonplaceholder.typicode.com/posts/1
curl -i -H "Accept: application/json" -H "Content-Type: application/json" $result
这可以告诉你你想要什么。
+0
感谢您的回应,我看到你先回答,但其他答案实际上提供了我所需要的,因为它展示了响应被存储在一个变量准备被解析,这是什么我会做。 – an0nc0d3r
谢谢,只是我需要:) – an0nc0d3r