Как запросить переменную, которая имеет значение json, используя jq. Ниже команда возвращает json, назначенный переменной activity
. Но из переменной activity
не знаете, как сделать запрос с помощью jq?
activity=`aws autoscaling describe-scaling-activities --profile mfa --auto-scaling-group-name cb-citation-needed --max-items 1`
Когда я пытаюсь под ним, переменная activityCause пуста.
activityCause=$activity| jq -r '.Activities[].Cause'
или
activityCause=`$activity| jq -r '.Activities[].Cause'` i get error for this one
Однако, когда я пытаюсь выполнить запрос одной командой, он работает
activityCause=`aws autoscaling describe-scaling-activities --profile mfa --auto-scaling-group-name cb-citation-needed --max-items 1 | jq -r '.Activities[].Cause'`
Первая команда присваивает JSON переменной activity
.
Вторую команду необходимо изменить, чтобы «пропустить» json через канал, поскольку в activityCause=$activity
$activity
интерпретируется как команда, а не JSON;
Используйте bash здесь
activityCause=$(jq -r '.Activities[].Cause' <<< "$activity")
Используйте олдскульное эхо:
activityCause=$(echo "$activity" | jq -r '.Activities[].Cause')
Совет:
echo
может перепутать некоторые строки и работает по-разному в разных системах.printf '%s' "$activity"
надежнее.