Linux

如何多次檢查while循環內的條件然後執行命令

  • October 30, 2022
switchback(){

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

在上面的函式中,我怎麼能像if 條件應該連續 5 次為真,然後只有它做進一步的操作。

只需添加一個等於 5 的計數器變數。如果條件為真則減 1,如果為假則重置為 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 命令才能工作。

引用自:https://unix.stackexchange.com/questions/722980