Как передать несколько аргументов в JQ? - PullRequest
0 голосов
/ 21 апреля 2019

Я пытаюсь написать новый файл JSON. Я хочу определить несколько переменных, а затем установить их для различных свойств в новом файле json.

jq --arg dnb "$DOMAIN_NAME_BUILT" --arg origin "$DOMAIN_ID_BUILT" \ 
   '.Origins.Items[0].DomainName = $dnb' | '.Origins.Items[0].Id = $origin' distconfig.json > "$tmp" && mv "$tmp" distconfig.json

Это работает только с одной переменной: --arg NAME VALUE pattern, но когда я добавляю второй аргумент arg и использую piping jq ... 'x1 = y1 | x2 = y2, e.g., он ломается.

1 Ответ

3 голосов
/ 21 апреля 2019

труба должна быть внутри фильтра .и рассмотрите возможность использования оператора присваивания для сокращения вашего кода:

jq --arg dnb "$DOMAIN_NAME_BUILT" \
   --arg origin "$DOMAIN_ID_BUILT" \
   '.Origins.Items[0] |= ( .DomainName = $dnb | .Id = $origin )' \
distconfig.json > "$tmp" && mv "$tmp" distconfig.json
...