bash + 在 bash 中每 10 分钟打印一行

bash + 在 bash 中每 10 分钟打印一行

我想每 10 分钟通过 echo 打印以下内容“仍在进行中,请再等待 10 分钟”

请指教在 echo 命令前需要添加什么条件才能每 10 分钟打印一次此行?

备注 - 计数器每个周期(1 秒)增加一,我不想在此脚本中添加额外的延迟(睡眠命令)!!!!!

 Until   [    ]
 do
 Counter=1

 sleep 1

  let counter=$counter+1

  [ .... ] &&  echo " still in process wait another 10 min …."

 done 

答案1

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

因此应该做这样的事:

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

答案2

使用模运算符(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

答案3

你想要的是这样的:

#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

答案4

你可能想要睡眠程序,可以实现“精确睡眠”。还有一个博客文章关于如何用它解决不需要睡过头的问题

相关内容