bash +打印每10分钟打一行

我想通过echo每10分钟打印下面的“还在继续等10分钟”

为了每10分钟打印一行,请在echo命令之前build议添加什么条件?

备注 – 计数器每增加一个周期(1秒),我不想为此脚本添加附加延迟(睡眠命令)!

Until [ ] do Counter=1 sleep 1 let counter=$counter+1 [ .... ] && echo " still in process wait another 10 min …." done 

添加另一个计数器,如果达到600,则调用echo并重置计数器。 根据需要重复。

所以这样的事情应该这样做:

 let echocounter=$echocounter+1 if [ $echocounter == 600 ]; then echo "still in process wait 10 min ..."; $echocounter=0; fi 

使用模运算符(bash特定语法):

 if [ $(($counter % 600)) -eq 0 ] ; then echo " still in process wait another 10 min .." fi 

或者更便携:

 if [ `expr $counter % 600` -eq 0 ] ; then echo " still in process wait another 10 min .." fi 

你想要的是这样的:

 #10 minutes from now Increment_Timestamp=$(( $(date +%s) + 600 )) while [ ... ] do ... ... # When now is 10 minutes ago, show the message. if [ $(date +%s) -lt "${Increment_Timestamp}" ] then ${Increment_Timestamp}=$(( $(date +%s) + 600 )) echo "Message" fi done 

我添加了一些逻辑来检查时间:

 BOOL=true MINUTES=$(date +"%M") MINUTES=$(echo $MINUTES | sed 's/^0*//') if $BOOL ; then BOOL=false if [ $MINUTES -le "49" ];then MINUTES10=$(($MINUTES+10)) else MINUTES10=$(($MINUTES+50)) fi fi if [ $MINUTES10 -eq $MINUTES ];then echo "message" BOOL=true fi 

你可能想要一个允许“准确睡觉”的软件程序。 还有一篇关于如何用它来解决不需要睡过头的问题的博客文章