![如何多次检查while循环内的条件然后执行命令](https://linux22.com/image/212695/%E5%A6%82%E4%BD%95%E5%A4%9A%E6%AC%A1%E6%A3%80%E6%9F%A5while%E5%BE%AA%E7%8E%AF%E5%86%85%E7%9A%84%E6%9D%A1%E4%BB%B6%E7%84%B6%E5%90%8E%E6%89%A7%E8%A1%8C%E5%91%BD%E4%BB%A4.png)
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 命令才能工作。