JQ фильтр выражение в строковой интерполяции - PullRequest
1 голос
/ 27 января 2020

Я пытался уменьшить массив до строки, которая будет использоваться при интерполяции строк.

Например.

input = ["123", "456"]
expected output = array=123,456

Вот моя попытка

$ echo '["123", "456"]' | jq 'array=\(.|join(","))'
jq: error: syntax error, unexpected INVALID_CHARACTER (Unix shell quoting issues?) at <top-level>, line 1:
array=\(.|join(","))
jq: 1 compile error

Ответы [ 2 ]

2 голосов
/ 27 января 2020

Используя строковую интерполяцию \(.), вы можете сделать что-то вроде ниже. Ваша идея почти верна, но для интерполяции с использованием \(..) необходимо, чтобы фильтр присутствовал внутри строки с выражением, которое будет использоваться внутри паренов после обратного слэса sh

jq --raw-output '"array=\(join(","))"'
1 голос
/ 27 января 2020
echo '["123", "456"]' | jq -r '"array=" + join(",")'
...