bash - 在 BASH 变量中合并 cURL 输出字符串
问题描述
我想让获取数据的过程自动化(我想要一个从汽车发送/接收数据的应用程序)。我可以通过复制/粘贴 cURL 查询的结果来手动执行此操作,但我想将其放入 BASH shell 脚本中,但我不知道如何将结果从一个 cURL 命令传输到下一个命令。这是一个例子:
result="$(curl -X POST -H "Cache-Control: no-cache" -H "Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW"\
-F "grant_type=password" -F "client_id=$CLIENT_ID" -F "client_secret=$CLIENT_SECRET" -F "email=$EMAIL" -F "password=$PASSWORD"\
"https://owner-api.teslamotors.com/oauth/token")"
输出是:
result:'{"access_token":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","token_type":"bearer","expires_in":3888000,"refresh_token":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","created_at":1592850440}'
其中 XXXXXXXXXXXXXXX 是隐藏条目。我是一名新手程序员,无法将结果(例如“access_token”)放入下一个 cURL 中:
curl --include --header "Authorization: Bearer {access_token}" "https://owner-api.teslamotors.com/api/1/vehicles"
有没有一种简单的方法可以使用 BASH 来做到这一点,还是使用 JavaScript 或 Python 更好?(我不是很擅长)。其他命令返回具有 10 个字段的更复杂的字符串。我想在 BASH shell 中操作这些变量(其中一些是实数,而不是字符串)。我试过 awk 但没有看到一个简单的方法来使用它。
解决方案
您应该使用jq
来处理 JSON 数据,或者更好地使用 Python 请求,这使得新手相处起来非常简单。使用普通的 shell 和 curl,您必须手动执行太多操作。
推荐阅读
- javascript - ES5格式化长SQL查询的方式
- mysql - 将字符串值转换为时间戳格式
- ios - 是否可以在测试 iOS 设备上远程部署应用更新
- corda - 如何向节点的用户打印消息(在 shell 或 http 响应上)?
- node.js - 如何使用 cypress.io 更改 db 中记录的属性
- php - 带有警告错误的 Readfile() 和 html_entity_decode() 不起作用 - PHP
- javascript - 复制到另一个存储桶后从源存储桶中删除?
- vb.net - 陷入异常“发生一个或多个错误”。聚合异常
- php - Holder.js 图像未在 Symfony 项目中呈现
- kubernetes - Multiple persistent volumes in minikube