axsmak
@axsmak
Создатель

Как с помощью jq добавить значение из переменной, содержащей пробелы?

json="{}"
foo="Without_spaces"
bar="With spaces"
json=$(jq '.one = "Without_spaces"' <<< $json)
json=$(jq '.two = "With spaces"' <<< $json)
json=$(jq '.foo = "'$foo'"' <<< $json)
# json=$(jq '.bar = "'$bar'"' <<< $json)
jq . <<< $json

Скрипт формирует JSON объект. Значения ключей помещаются в переменную, затем добавляются в объект. И вот возникла ситуация, когда в переменной находится строка с пробелами (закомментированная строка). jq выдаёт ошибку
jq: error: syntax error, unexpected $end, expecting QQSTRING_TEXT or QQSTRING_INTERP_START or QQSTRING_END (Unix shell quoting issues?) at <top-level>, line 1:
.bar = "With        
jq: 1 compile error

Если значение с пробелом хардкорно записано в коде, то ошибки нет (ключ two)
Как побороть?
  • Вопрос задан
  • 687 просмотров
Решения вопроса 1
xotkot
@xotkot
хорошо есть и хорошо весьма
json=$(jq --arg v "$bar" '.bar = $v' <<< $json)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы