从shell变量运行带有JSON内容的curl命令[重复]
Posted
技术标签:
【中文标题】从shell变量运行带有JSON内容的curl命令[重复]【英文标题】:Running curl command with JSON content from a shell variable [duplicate] 【发布时间】:2018-09-15 05:31:06 【问题描述】:我有下面的脚本...
而且我似乎无法让变量起作用
#!/bin/bash
info = 'Help...?'
object='"attachments": ["title": "ti1","text": $info ]'
curl -X POST -H 'Content-type: application/json' --data '$object' https://hooks.slack.com/services/xxxx
exit 0
如果没有$info
,即使--data '$object'
也无法工作...因为 Slack API 无法读取我的请求。
我该如何解决这个问题?
【问题讨论】:
使用shellcheck.net 捕捉脚本中的错误。 @chepner:你能找到合适的骗子吗?我似乎在 SO 中找不到,只能在 Unix.SE 中找到 很多问题..=
... $info
在单引号内不应该有空格 - 不会被扩展.. 请参阅mywiki.wooledge.org/Quotes
@Inian 单/双引号 --> ***.com/questions/6697753/…
@Sundeep 很长一段时间以来,我一直在尝试使用该链接,我想用一个明确的问题来欺骗一个明确的问题,即单引号不会扩展变量并且需要双引号。您分享的内容比需要的更详细
【参考方案1】:
在传递 shell 变量时使用双引号并删除变量赋值中的多余空格。
curl -X POST -H 'Content-type: application/json' --data "$object"
# ^^^^^^^^^^
使用嵌套引号将值保留在 JSON 语法中
info='Help...?'
object='"attachments": ["title": "ti1","text": "'"$info"'" ]'
【讨论】:
以上是关于从shell变量运行带有JSON内容的curl命令[重复]的主要内容,如果未能解决你的问题,请参考以下文章