使用来自 shell 变量的 JSON 内容运行 curl 命令

Bor*_*rsn 2 linux bash shell

我有下面的脚本...

而且我似乎无法让变量起作用

#!/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
Run Code Online (Sandbox Code Playgroud)

即使--data '$object'没有$info……也无法工作,因为 Slack API 无法读取我的请求。

我该如何解决?

Ini*_*ian 11

传递 shell 变量时使用双引号并删除变量赋值中的多余空格。

curl -X POST -H 'Content-type: application/json' --data "$object"
#                                                       ^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)

使用嵌套引号保留 JSON 语法中的值

info='Help...?'
object='{"attachments": [{"title": "ti1","text": "'"$info"'" }]}'
Run Code Online (Sandbox Code Playgroud)