json 如果值有空格,则用jq添加值失败[duplicate]

vsnjm48y  于 2023-02-06  发布在  其他
关注(0)|答案(1)|浏览(85)
    • 此问题在此处已有答案**:

Passing variables (containing spaces) to curl --data field(3个答案)
2天前关闭。
当我尝试添加一个bash字符串时,它包含了带有jq的空格,一个错误信息将会产生,如果没有空格,这个错误就不会发生。

    • 生成错误的代码**
value="value with spaces"
echo {} | jq ". +={"key":"'$value'"}"
  • 错误信息 *

jq: error: syntax error, unexpected $end, expecting QQSTRING_TEXT or QQSTRING_INTERP_START or QQSTRING_END (Unix shell quoting issues?) at <top-level>, line 1: . +={"key":"value jq: 1 compile error

  • 预期产出 *

{"key":"value with spaces"}

  • 注意 * 如果value bash变量中没有空格,命令将正常运行
e4eetjau

e4eetjau1#

您需要正确设置jq中使用的字符串的格式。
可以用相同的方法创建变量:

VAL="value with spaces"

像这样使用它:

jq -n --arg myvar "${VAL}" '{key: $myvar}'
{
  "key": "value with spaces"
}

相关问题