2017-10-10 2 views
0

Je suis en train d'exécuter un script shell à boucle thro une liste d'images-ids pour trouver les méta-donnéesaws cli: SSFE EC2 describe-images: looping et la lecture du fichier

#!/bin/bash 
values=$(<$PWD/amis_ID.txt) 
for value in $values 
do 
    aws ec2 describe-images --region="us-****-1" --image-ids "$value" 
done 

Exemple amis_ID_only.txt

ami-11c3b374 
ami-3dd32356 
ami-ae3222c6 
ami-4cdd9b26 
ami-21a7e964 
ami-c928e732 
ami-15add3ff 
ami-2b8e3820 
ami-fs0dhswe 
... 

Lorsque j'imprime $ des valeurs, il me semble bien à

Mais pour la boucle va mal tourné

"n error occurred (InvalidAMIID.Malformed) when calling the DescribeImages operation: Invalid id: "ami-11c3b374 

et continue sur la boucle.

J'ai essayé avec et sans guillemets pour $ value in for loop. Pensant également si le format de fichier est faux? S'il vous plaît laissez-moi savoir il ya des suggestions si j'ai besoin de nettoyer le fichier en supprimant des caractères spéciaux, des tabulations, des espaces avec sed, awk etc ou toute autre chose si quelque chose me manque. ou si cette façon de boucle même possible pour aws ec2 describe

Pour votre information: course juste le aws ec2 describe-images --image-ids <ami-id> qui crachait travaillée JSON

Répondre

1

Vous voulez rarement faire une boucle sur le contenu du fichier directement dans bash. Il est lent, moche ...

Le préféré (et plus agréable) est moyen - par exemple:

<amis_ID.txt xargs -I{} \ 
    aws ec2 describe-images --region="us-****-1" --image-ids "{}" 
+0

Je ne sais pas pourquoi, mais voyant toujours la même erreur. Quelque chose semble être éteint dans le fichier, alors que je l'ai enregistré comme txt? Une erreur est survenue lors de l'appel de l'opération DescribeImages: Invalid id: "ami-11c3b374 il y a une sorte de char de ligne suivante qu'il rencontre. J'ai mis à jour la question – Jauyzed

+0

essayez d'ajouter 'tr -d" \ r "' au pipeline, peut-être que votre fichier est au format DOS (' liborm

0

C'était un problème de format de fichier. Ma solution originale a fonctionné ou toute autre solution fonctionnerait. Le fichier était au format DOS.

Voici ce que je l'ai fait: ouvrir le fichier dans vi éditeur et fixé les fins de ligne avec

:set fileformat=unix

Merci pour toutes les solutions