Ваша переменная $var1
не раскрывается оболочкой, поскольку находится внутри одинарной кавычки '
.
Вам нужно использовать двойные кавычки, чтобы позволить 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
)"