Ваш журнал отладки показывает проблему (даже если сама строка [[
странно скрывает ее):
+ echo -e '"DELETE_IN_PROGRESS"'
Значение, которое вы сравниваете, содержит буквальные двойные кавычки. Вот почему матч провалился. Правая часть ==
содержит синтаксические двойные кавычки, которые не рассматриваются как часть строки.
Чтобы исправить это, используйте jq -r
для вывода строки без JSON-форматирования и экранирования:
json='{ "foo": "bar" }'
jq '.foo' <<< "$json" # Shows bad 5 character value: "bar"
jq -r '.foo' <<< "$json" # Shows good 3 character value: bar
В вашем случае:
while [[ $(aws cloudformation describe-stacks --stack-name ${stackname} | jq -r '.Stacks | .[0] | .StackStatus') == "DELETE_IN_PROGRESS" ]]; doq -r '.Stacks | .[0] | .StackStatus') == "DELETE_IN_PROGRESS" ]]; do
echo "Still deleting"
sleep 30
done