複数の単語(スペースで区切られた)bash変数でJSONオブジェクトを構成する方法は?

複数の単語(スペースで区切られた)bash変数でJSONオブジェクトを構成する方法は?

jqを使用してユーザー入力でJSONオブジェクトを構成する小さなbashスクリプトがあります。残念ながら、jqが複数の単語変数をキーの1つの値として受け入れるように説得することはできません。

以下は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シェルによってトークン化されます。答えは単に引用することです。

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

また、見ることができます

関連情報