如何在Bash脚本的Slack应用通知消息中正确插入自定义变量?
问题根因
Bash 语法中,单引号包裹的内容不会解析任何变量,你当前将整个 JSON 结构体放在单引号内,因此$company只会被当作文本字面量输出,不会读取变量的实际值。
可行修改方案
方案1:单引号拆分拼接(最快捷,无需额外工具)
把变量部分挪到单引号外,用双引号包裹变量保证特殊字符兼容,修改后代码如下:curl -X POST -H 'Content-type: application/json' --data '{"text":"Blah Blah Blah found on '"$company"'"}'方案2:用双引号包裹JSON整体,转义内部双引号
双引号包裹的内容可以正常解析变量,仅需要把JSON内部的双引号用反斜杠转义即可:curl -X POST -H 'Content-type: application/json' --data "{\"text\":\"Blah Blah Blah found on $company\"}"方案3:用jq生成JSON(最稳妥,避免格式损坏)
如果$company变量可能包含双引号、换行等特殊字符,前两种方案可能会破坏JSON结构,推荐用jq工具生成合法JSON:# 先构造合法JSON post_data=$(jq -n --arg comp "$company" '{"text": "Blah Blah Blah found on \($comp)"}') # 调用curl发送 curl -X POST -H 'Content-type: application/json' --data "$post_data"
内容的提问来源于stack exchange,提问作者JordanWeaver
相关产品推荐
相关产品推荐

