В bash петли могут использоваться вместе с трубами. Это означает, что мы можем иметь довольно простой l oop и постобработать результаты на более позднем шаге.
for i in {0..20}
do
aws ec2 describe-snapshots --filters Name=description,Values="*TestVolume$i*" --query "reverse(sort_by(Snapshots, &StartTime))[0].SnapshotId"
done | sort | uniq | grep snap > GetSnapId
Обратите внимание, что > GetSnapId
был перемещен еще ниже, после постобработки .
Сама постобработка направляет необработанный список идентификаторов привязки в sort
, а затем uniq
. Они работают вместе, собирают и затем удаляют дубликаты. Далее идет grep, который отфильтровывает строки null
(это проблема? Это было не очень понятно.) Затем результат отправляется в выходной файл.
При таком подходе я удалил echo
для предотвращения его объединения с другим выходом, выходящим из l oop. Если это необходимо, вы можете добавить его обратно, но вывести в stderr
: 1>&2 echo "Retrieving ..."