LINUX.ORG.RU

История изменений

Исправление 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 в системе есть, думаю, что нетривиальное шаблонирование лучше делать через него.