如何从可执行bash脚本中的curl获得正确的响应? [英] How to get correct response from curl in executable bash script?

查看:2583
本文介绍了如何从可执行bash脚本中的curl获得正确的响应?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have a super simple bash script...

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

我正在尝试调用REST API并解析响应。

I am trying to call a REST API and parse the response.

当我执行此脚本时,我得到了这个回复,这不是我想要的......

When I execute this script, I get this response, which is not what I want...

  % 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命令时,我得到了这个响应,这就是我想要的...... 。

When I run the curl command directly in my terminal, I get this response, which IS what I want...

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"
}

有人可以指出我缺少的东西,请:)

Can someone point out what I'm missing please :)

推荐答案

当您想将结果保存到变量时,需要引用结果:

You need to quote the result when you want to save it to a variable:

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

双引号很重要如果你想保留多行。

The double quotes are important if you want to preserve multiple lines.

这篇关于如何从可执行bash脚本中的curl获得正确的响应?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆