Задать вопрос
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)
Как побороть?
  • Вопрос задан
  • 866 просмотров
Подписаться 2 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    1C-программист: расширенный курс
    18 месяцев
    Далее
  • Skillbox
    Middle-разработчик игр на Unity
    3 месяца
    Далее
  • ProductStar
    Python и Django: бэкенд-разработка
    2 месяца
    Далее
Решения вопроса 1
xotkot
@xotkot
хорошо есть и хорошо весьма
json=$(jq --arg v "$bar" '.bar = $v' <<< $json)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
ИТРУМ Ростов-на-Дону
от 75 000 ₽
СофтМоушен Санкт-Петербург
от 150 000 до 250 000 ₽
Яндекс Москва
от 180 000 до 350 000 ₽