首页 > 解决方案 > bash脚本curl请求中的转义变量

问题描述

我正在尝试通过 bash 脚本卷曲,但无法在 curl 请求中传递 var1 的值,并且在执行时出现错误......

 #!/bin/bash
 var1="some test message"
 curl 'https://link' \
 -H 'Content-Type: application/json' \
 -d '
{"msgtype": "text", 
  "text": {
      "content": $var1
   }
}'

标签: linuxbashshellcurl

解决方案


一般来说,不要像这样使用参数扩展来动态定义 JSON。不能保证您的模板与变量的内容相结合,生成格式良好的 JSON。(这与您不使用字符串插值来创建动态 SQL 查询的原因相同。)请改用类似的工具jq

curl 'https://link' ... \
  -d "$(jq --argjson x "$var" \
           -n '{msgtype: "text", text: {content: $x}}')"

推荐阅读