Retomando os vários comentários, você deve modificar o script para algo assim:
#/bin/bash/
now=$(date '+%Y-%m-%d-%H')
# Creates DB snapshot
echo ---------------------------------------- >> create_snap.txt
echo Start time: >> create_snap.txt
date >> create_snap.txt
aws rds create-db-snapshot --db-instance-identifier db --db-snapshot-identifier test-for-dr-$now
while true; do
STATUS='aws rds describe-db-snapshots --db-snapshot-identifier test-for-$now | grep "Status" | awk '{print $2}' | sed 's/[",]//g''
if [ "$STATUS" == "available" ]; then
break
else
echo "" &> /dev/null
fi
sleep 15
done
echo Completion time: >> create_snap.txt
date >> create_snap.txt
echo ---------------------------------------- >> create_snap.txt
echo "" >> create_snap.txt
Como você pode ver, existe um único loop, a variável $ STATUS é atualizada no loop e existe um sleep 15
para evitar martelar a API