until [ $(aws ssm get-automation-execution --automation-execution-id "$id" --query 'AutomationExecution.AutomationExecutionStatus' --output text) = *"InProgress"* ];
do
echo "Automation is running......"
sleep 1m
done
status=$(aws ssm get-automation-execution --automation-execution-id "$id" --query 'AutomationExecution.AutomationExecutionStatus' --output text)
if [ "$status" == "Success" ]; then
echo "Automation $status"
elif [ "$status" == "Failed" -o "$status" == "Cancelled" -o "$status" == "Timed Out" ]; then
echo "Automation $status"
fi
here the loop is never exiting, it keeps printing "Automation is running......" even after automation has been executed and status is not inprogress what i want to do is wait until status is " inprogress", print "Automation is running......" on screen. once its finished, i want to print the status of automation on screen if it failed or succeeded.
whileinstead ofuntil? You might never see that string if the command finishes fast, and you want to wait while it runs, not until it does.