Shell语法错误:“虽然:未找到命令”

时间:2019-03-28 15:05:30

标签: shell

下面的代码片段检查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

1 个答案:

答案 0 :(得分:0)

您的原始代码中有许多简单的错误:While不是while[周围缺少空格,缺少双引号,比较运算符-eq-ne不是用于比较字符串...

当心使用wait,这是有效的shell命令。但是可能您的意思是sleepHere 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脚本技能变得越来越生锈了。