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 命令才能工作。