Json 如何在可执行bash脚本中从curl获得正确的响应?

Json 如何在可执行bash脚本中从curl获得正确的响应?,json,linux,bash,http,curl,Json,Linux,Bash,Http,Curl,我有一个超级简单的bash脚本 #!/bin/bash result=$(curl -i -H "Accept: application/json" -H "Content-Type: application/json" https://jsonplaceholder.typicode.com/posts/1) 我正在尝试调用RESTAPI并解析响应 当我执行这个脚本时,我得到了这个响应,这不是我想要的 % Total % Received % Xferd Average Spee

我有一个超级简单的bash脚本

#!/bin/bash
result=$(curl -i -H "Accept: application/json" -H "Content-Type: application/json" https://jsonplaceholder.typicode.com/posts/1)
我正在尝试调用RESTAPI并解析响应

当我执行这个脚本时,我得到了这个响应,这不是我想要的

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
146   292  146   292    0     0   1106      0 --:--:-- --:--:-- --:--:--  6790
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"
}
当我在终端中直接运行curl命令时,我得到这个响应,这就是我想要的

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
146   292  146   292    0     0   1106      0 --:--:-- --:--:-- --:--:--  6790
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}"

如果要保留多行,双引号非常重要。

如果要将结果保存到变量中,则需要将其引用:

#!/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

这可以显示您想要的内容。

要获得curl的实际输出,可以直接在脚本中使用该命令。或者您可以在变量中设置端点

#!/bin/bash
result=https://jsonplaceholder.typicode.com/posts/1
curl  -i -H "Accept: application/json" -H "Content-Type: application/json" $result

这可以向您展示您想要的内容。

感谢您的回复,我看到您首先给出了答案,但另一个答案实际上为我提供了我所需要的内容,因为它演示了响应存储在一个变量中,准备进行解析,这正是我将要做的。感谢您的回复,我看到你先回答了,但另一个答案实际上提供了我所需要的,因为它演示了响应存储在一个变量中,准备好进行解析,这就是我将要做的。谢谢,正是我需要的:)谢谢,正是我需要的:)