Практическое задание

Эта задача — шаг 5 курса «JSON, YAML и XML в консоли»

jq --arg: параметр из шелла

средне~7 мин

В /root/users.json — массив объектов с полями name и age; имена бывают с пробелами и кавычками. Напиши скрипт /root/age.sh: он принимает имя первым аргументом и печатает возраст этого пользователя. Имя не вклеивай в текст фильтра — передай его в jq переменной через --arg. Запусти скрипт для Boris (bash /root/age.sh Boris) и запиши результат в /root/age.txt.

Что потренируешь:
  • jq
  • --arg
  • переменные
  • select
  • параметризация

Разбор темы

Вставлять внешние значения прямо в текст jq-фильтра опасно (спецсимволы, кавычки, инъекции) и неудобно из-за экранирования шелла. Правильный способ — объявить переменные: --arg имя значение создаёт строковую $имя, --argjson имя JSON — значение произвольного типа (число, объект). В фильтре они доступны как $имя. Это делает jq-скрипты переиспользуемыми и безопасными — тот же фильтр работает с разными параметрами, передаваемыми снаружи, без склейки строк.

Что проверяется

  1. записан верный возраст Boris
  2. скрипт берёт имя из аргумента
  3. имя с кавычками не ломает фильтр

Как это выглядит