如何从多字(空格分隔)bash 变量构造 JSON 对象?

如何从多字(空格分隔)bash 变量构造 JSON 对象?

我有一个小型 bash 脚本,它使用 jq 从用户输入构造 JSON 对象。不幸的是,我无法说服 jq 接受多字变量作为其键之一的值。

以下是 bash 提示符中的等效示例:

没有空格 jq 按我的预期工作:

$> value="Input"
$> jq -n --arg value $value '{"key": ($value)}'

返回:

{
   "key": "Input"
}

但它会破坏多字值:

$> value="A multi word input"
$> jq -n --arg value $value '{"key": ($value)}'

返回错误:

jq: error: multi/0 is not defined at <top-level>, line 1:
multi
jq: 1 compile error

有什么魔力可以说服 jq 不会被 $value 的空白区域噎住呢?

答案1

您未引用的内容$value会受到 shell 的分词 - 答案只是简单地引用它:

$ jq -n --arg value "$value" '{"key": ($value)}'
{
  "key": "A multi word input"
}

也可以看看

相关内容