我正在尝试通过bash脚本进行卷曲,但是无法在curl请求中传递var1的值,并且在执行时出错...
#!/bin/bash
var1="some test message"
curl 'https://link' \
-H 'Content-Type: application/json' \
-d '
{"msgtype": "text",
"text": {
"content": $var1
}
}'
答案 0 :(得分:0)
您的变量$var1
不会被shell扩展,因为它位于单引号'
中。
您需要使用双引号让bash进行参数扩展,并转义json数据:
#!/bin/bash
var1="some test message"
curl 'https://link' \
-H 'Content-Type: application/json' \
-d "
{
\"msgtype\": \"text\",
\"text\": {
\"content\": \"$var1\"
}
}"
或者您可以使用内联文档(不逃避地狱,但是命令变得笨拙):
#!/bin/bash
var1="some test message"
curl 'https://link' \
-H 'Content-Type: application/json' \
-d "$(cat <<EOT
{
"msgtype": "text",
"text": {
"content": "$var1"
}
}
EOT
)"
答案 1 :(得分:0)
使用以下脚本。
https://aaa.com' -H 'Content-Type: application/json' -d '{"msgtype": "text", "text": { "content": '"'$var1'"' }}'
答案 2 :(得分:0)
通常,不要像这样使用参数扩展来动态定义JSON。不能保证您的模板与变量的内容一起生成格式正确的JSON。 (出于同样的原因,您没有使用字符串插值来创建动态SQL查询。)请改用jq
之类的工具。
curl 'https://link' ... \
-d "$(jq --argjson x "$var" \
-n '{msgtype: "text", text: {content: $x}}')"