我希望从头开始创建一个如下所示的JSON文件:
{
"Key1": {
"SubKey1": "Value1",
"SubKey2": "Value2"
}
}
我的bash脚本中有以下变量:
$key1
$subkey1
$subkey2
$value1
$value2
我尝试了几次JQ,但没有结果:
jq --arg key1 $key1 \
--arg subkey1 $subkey1 \
--arg value1 $value1 \
--arg subkey2 $subkey2 \
--arg value2 $value2 \
'[$key1].[$subkey1]=$value1 | [$key1].[$subkey2]=$value2' <<<'{}'
jq: error: syntax error, unexpected '[', expecting FORMAT or QQSTRING_START (Unix shell quoting issues?) at <top-level>, line 1:
.[key1].[subkey1]=$value1 | .[key1].[subkey2]=$value2
jq: 1 compile error
jq --arg key1 $key1 \
--arg subkey1 $subkey1 \
--arg value1 $value1 \
--arg subkey2 $subkey2 \
--arg value2 $value2 \
'.$key1 | .[$subkey1]=$value1 | .[$subkey2]=$value2' <<<'{}'
{
"SubKey1": "Value1",
"SubKey2": "Value2"
}
但是我没有得到正确的结果。
答案 0 :(得分:1)
使用多个--arg标志的方法可以按如下所示工作:
key1=Key1
subkey1=SubKey1
subkey2=SubKey2
value1=Value1
value2=Value1
jq -n --arg key1 "$key1" --arg subkey1 "$subkey1" --arg subkey2 "$subkey2" --arg value1 "$value1" --arg value2 "$value2" '
{
($key1): {
($subkey1): $value1,
($subkey2): $value2
}
}
'
.[$key1] = (.[$subkey1]=$value1 | .[$subkey2]=$value2)