我有一个小型 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"
}
也可以看看