сценарий оболочки ec2 список моментальных снимков неверный вывод

#bash

#bash

Вопрос:

Я создаю скрипт для отображения снимков, созданных в AWS. На данный момент он работает правильно, когда я запускаю скрипт, ищущий снимок по отдельности, выполняемый следующим образом.

  ./ec2_list_snapshots.sh -i i-04797a6cfc772c17a   Instancia: i-04797a6cfc772c17a  "SnapshotId": "snap-0d6a5d763704cb67c",  "StartTime": "2021-12-02T17:06:25.839000 00:00",  "VolumeId": "vol-058db7c144eea4099"    "SnapshotId": "snap-0e795e3fc9de3bbf5",  "StartTime": "2021-12-02T16:47:57.755000 00:00",  "VolumeId": "vol-058db7c144eea4099"  

Когда я запускаю скрипт с параметром-w, который ищет покровителя в имени тега, в выводе скрипта я вижу, что все повторяется.

 Instancia: INFRA  "SnapshotId": "snap-0d6a5d763704cb67c",  "StartTime": "2021-12-02T17:06:25.839000 00:00",  "VolumeId": "vol-058db7c144eea4099"    "SnapshotId": "snap-0e795e3fc9de3bbf5",  "StartTime": "2021-12-02T16:47:57.755000 00:00",  "VolumeId": "vol-058db7c144eea4099"   Instancia: INFRA  "SnapshotId": "snap-0f83f47b0deb6ccdd",  "StartTime": "2021-12-06T20:13:35.685000 00:00",  "VolumeId": "vol-0e3dda56a65fb08f4"   Instancia: INFRAESTRUCTURA  "SnapshotId": "snap-0d6a5d763704cb67c",  "StartTime": "2021-12-02T17:06:25.839000 00:00",  "VolumeId": "vol-058db7c144eea4099"    "SnapshotId": "snap-0e795e3fc9de3bbf5",  "StartTime": "2021-12-02T16:47:57.755000 00:00",  "VolumeId": "vol-058db7c144eea4099"   Instancia: INFRAESTRUCTURA  "SnapshotId": "snap-0f83f47b0deb6ccdd",  "StartTime": "2021-12-06T20:13:35.685000 00:00",  "VolumeId": "vol-0e3dda56a65fb08f4"  

Вот код

 #!/bin/bash  function show_usage() {   printf "Usage: $0 [options [parameters]]n"   printf "n"   printf "Options:n"   printf " -i|--instance, Find snapshot from a single instancen"   printf " -w|--wilcard, Find snapshot wilcard in tag namen"   printf " -h|--help, Print helpn"   exit 1 }  if [[ "$1" == "--help" ]] || [[ "$1" == "-h" ]] || [ -z "$1" ] ;then   show_usage  fi    while [ ! -z "$1" ]; do   case "$1" in   -i|--instances)   shift   BLUE=$(tput setaf 4)  NORMAL=$(tput sgr0)  INSTANCES=$1  VOLUMEN_ID=$(aws ec2 describe-instances --instance-ids "$INSTANCES" | jq -r '.Reservations|.[].Instances|.[].BlockDeviceMappings[].Ebs.VolumeId')  VOLUMEN_INFO=$(aws ec2 describe-snapshots --filters "Name=volume-id,Values=vol-058db7c144eea4099" | jq -r '.Snapshots[] | {SnapshotId, StartTime , VolumeId }' | tr -d "{}")  printf "n%s%sn" " ${BLUE}Instancia:${NORMAL} $INSTANCES" "$VOLUMEN_INFO"  ;;   -w|--wilcard)   shift   BLUE=$(tput setaf 4)  NORMAL=$(tput sgr0)  WILDCARD=$1  TAG=`aws ec2 describe-instances --filters "Name=tag:Name,Values=INFRA*" | jq -r '.Reservations[].Instances[].Tags[] | select(.Key=="Name").Value'`  for TAGS in $TAG ; do  VOLUMEN_ID=$(aws ec2 describe-instances --filters "Name=tag:Name,Values=$WILDCARD*" | jq -r '.Reservations|.[].Instances|.[].BlockDeviceMappings[].Ebs.VolumeId')  for VOLUMEN_SNAPSHOT in $VOLUMEN_ID ; do  VOLUMEN_INFO=$(aws ec2 describe-snapshots --filters "Name=volume-id,Values=$VOLUMEN_SNAPSHOT" | jq -r '.Snapshots[] | {SnapshotId, StartTime , VolumeId }' | tr -d "{}")  done  printf "n%s%sn" " ${BLUE}Instancia:${NORMAL} $TAGS" "$VOLUMEN_INFO" done  ;;   *)   show_usage   ;;   esac  shift  done  

My idea is that when executing the script with the parameter -w the output is as follows:

 Instancia: INFRA  "SnapshotId": "snap-0d6a5d763704cb67c",  "StartTime": "2021-12-02T17:06:25.839000 00:00",  "VolumeId": "vol-058db7c144eea4099"    "SnapshotId": "snap-0e795e3fc9de3bbf5",  "StartTime": "2021-12-02T16:47:57.755000 00:00",  "VolumeId": "vol-058db7c144eea4099"   Instancia: INFRAESTRUCTURA  "SnapshotId": "snap-0d6a5d763704cb67c",  "StartTime": "2021-12-02T17:06:25.839000 00:00",  "VolumeId": "vol-058db7c144eea4099"    "SnapshotId": "snap-0e795e3fc9de3bbf5",  "StartTime": "2021-12-02T16:47:57.755000 00:00",  "VolumeId": "vol-058db7c144eea4099"  

What am I doing wrong?

Regards,