【发布时间】:2021-12-21 15:59:12
【问题描述】:
我很困惑为什么这个while循环没有终止,即使stack_status看起来等于CREATE_COMPLETE。我是不是忘记了一些琐碎的事情?
stack_status=""
while [[ $stack_status != "CREATE_COMPLETE" ]];
do
stack_status=$(aws cloudformation --region us-east-2 describe-stacks --stack-name ${stack_name} --query Stacks[0].StackStatus);
echo "Waiting for stack to complete";
echo $stack_status;
sleep 5;
done
输出
Waiting for stack to complete
"CREATE_COMPLETE"
Waiting for stack to complete
"CREATE_COMPLETE"
Waiting for stack to complete
"CREATE_COMPLETE"
Waiting for stack to complete
"CREATE_COMPLETE"
【问题讨论】:
-
你的字符串是
"CREATE_COMPLETE",而不是CREATE_COMPLETE;他们不匹配。 -
另外,
echo $stack_status本身就是错误的;见I just assigned a variable, butecho $variableshows something else -
(考虑通过shellcheck.net 运行您的代码;它会自动识别引用错误等)。
-
@CharlesDuffy 从现在开始我肯定会使用 shellcheck.net。谢谢你。
标签: bash while-loop