下面的代码片段检查instance_status是否可用。如果可用,请等待15秒钟,如果等待,则回显实例状态。
我遇到以下错误:
第38行:While:找不到命令
代码:
While ["$INSTANCE_STATUS" -eq "available"]
do
wait 15
if $INSTANCE_STATUS" -ne "available"
then
echo "$SOURCE_INSTANCE_ID" is "$INSTANCE_STATUS"
fi
done
答案 0 :(得分:0)
您的原始代码中有许多简单的错误:While
不是while
,[
周围缺少空格,缺少双引号,比较运算符-eq
和-ne
不是用于比较字符串...
当心使用wait
,这是有效的shell命令。但是可能您的意思是sleep
。 Here details关于差异。
尝试一下:
while [ "$INSTANCE_STATUS" = "available" ]
do
sleep 15 # 'waits' 15 seconds.
# ATTENTION: here you might need to 'refresh' $INSTANCE_STATUS value to avoid an endless loop.
# Solution suggested by @Charles Duffy:
# INSTANCE_STATUS=$(systemctl status "$SOURCE_INSTANCE_ID")
if [ "$INSTANCE_STATUS" != "available" ]
then
echo "$SOURCE_INSTANCE_ID is $INSTANCE_STATUS"
fi
done
编辑:@Charles Duffy建议对原始答案进行许多修复...强制;)。感谢Charles,现在我意识到我的Shell脚本技能变得越来越生锈了。