如何多次检查while循环内的条件然后执行命令

如何多次检查while循环内的条件然后执行命令
switchback(){
  while true 
    do
      players=$(cat $serverpath/$port//count.txt);
      sleep 5;
      if (( $players < 10 )); then
        $(loadpubserveripip)
        break
      fi
    done
}

在上面的函数中,我怎样才能做到像条件if应该true连续 5 次,然后才进行进一步的操作。

答案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 次$players小于 10 时中断。
  • 我希望您知道您对该$(loadpubserveripip)行做了什么,其结果loadpubserveripip应该是一个有效的 shell 命令才能工作。

相关内容