0

我正在编写脚本(Azure 管道的 bash 脚本),我需要组合来自不同变量的 JSON。例如,我有:

TYPE='car'
COLOR='blue'
ADDITIONAL_PARAMS='{"something": "big", "etc":"small"}'

因此,如您所见,我有几个字符串变量和一个由 JSON 组成的变量。

我需要将这些变量与这种格式结合起来(我不能:():

some_script --extr-vars --extra_vars '{"var_type": "'$TYPE'", "var_color": "'$COLOR'", "var_additional_data": "'$ADDITIONAL_PARAMS'"}'

但是这种组合不起作用,我有一个类似的字符串:

some_script --extr-vars --extra_vars '{"var_type": "car", "var_color": "blue", "var_additional_data": " {"something": "big", "etc":"small"} "}'

这是不正确和有效的 JSON。

如何将现有的 JSON(已经用双引号格式化)与其他变量结合起来?我正在使用 bash / console / yq utilite(将 yaml 转换为 json)

4

1 回答 1

1

用于jq生成 JSON。(您可能可以使用 一步完成此操作yq,但我对该工具并不熟悉。)

ev=$(jq --arg t "$TYPE" \ 
        --arg c "$COLOR" \
        --argjson ap "$ADDITIONAL_PARAMS" \
        -n '{var_type: $t, var_color: $c var_additional_data: $ap}')

some_script --extr-vars --extra_vars "$ev"
于 2021-08-23T13:34:11.027 回答