whileループ内の条件を複数回確認した後にコマンドを実行する方法

whileループ内の条件を複数回確認した後にコマンドを実行する方法
switchback(){
  while true 
    do
      players=$(cat $serverpath/$port//count.txt);
      sleep 5;
      if (( $players < 10 )); then
        $(loadpubserveripip)
        break
      fi
    done
}

上記の関数で次のステップに進む前に条件を5回続けるif必要があるようにするにはどうすればよいですか?true

ベストアンサー1

5のようなカウンタ変数を追加するだけです。条件がtrueの場合は1ずつ減少し、falseの場合は5にリセットし、count = 0の場合は中止します。コードに基づく最も簡単な答えは次のとおりです。

switchback(){
    count=5
    while true 
    do
      players=$(cat $serverpath/$port//count.txt);
      if (( $players < 10 ));then
        if ! ((--count)); then
          $(loadpubserveripip)
          break
        fi
      else
        count=5
      fi
      sleep 5
    done
}

参考にするいくつかの点:

  • sleep 5最後のループで不要な睡眠を避けるために、ループの一番下に移動しました。
  • 「追加操作」は、ループの前からbreakループの後ろに移動できます。なぜなら、ループは5番目の時間が$players10未満の場合にのみ中断されるからです。
  • $(loadpubserveripip)その行で何をしているのか知ってほしい。結果は、loadpubserveripip機能できる有効なシェルコマンドでなければなりません。

おすすめ記事