История изменений
Исправление vbr, (текущая версия) :
Разве такое не прямо в оболочке делают?
Прямо в оболочке фигачить многострочный JSON? Ну можно, но мне так неудобно. Я люблю открыть файл в редакторе каком-нибудь и редактировать как белый человек.
Код возврата всего конвейера – это код возврата последней команды в конвеере.
Код возврата может быть скрыт предшествующей командой, такой как декларация переменной.
Это верно.
Надёжно написать на bash могут только гуру bash (читай затратившие значительное время на освоение), остальные – блаженные говнокодеры.
Тут не согласен. Нюансы есть, но в общем случае shellcheck плюс тестирование плюс небольшой опыт позволяют выживать.
Тем же jq можно собирать 100% корректный JSON из шаблона
Даже можно одним printf обойтись.
Сомневаюсь. Вот пример:
jq -n --arg name 'Don"Kihot' '{"name": $name}'
# { "name": "Don\"Kihot" }
Тут в переменной кавычка, которую нужно заэкранировать. Можно, конечно, каким-нибудь sed-ом, но раз уж jq в системе есть, думаю, что нетривиальное шаблонирование лучше делать через него.
Исходная версия vbr, :
Разве такое не прямо в оболочке делают?
Прямо в оболочке фигачить многостраничный JSON? Ну можно, но мне так неудобно. Я люблю открыть файл в редакторе каком-нибудь и редактировать как белый человек.
Код возврата всего конвейера – это код возврата последней команды в конвеере.
Код возврата может быть скрыт предшествующей командой, такой как декларация переменной.
Это верно.
Надёжно написать на bash могут только гуру bash (читай затратившие значительное время на освоение), остальные – блаженные говнокодеры.
Тут не согласен. Нюансы есть, но в общем случае shellcheck плюс тестирование плюс небольшой опыт позволяют выживать.
Тем же jq можно собирать 100% корректный JSON из шаблона
Даже можно одним printf обойтись.
Сомневаюсь. Вот пример:
jq -n --arg name 'Don"Kihot' '{"name": $name}'
# { "name": "Don\"Kihot" }
Тут в переменной кавычка, которую нужно заэкранировать. Можно, конечно, каким-нибудь sed-ом, но раз уж jq в системе есть, думаю, что нетривиальное шаблонирование лучше делать через него.