我想每 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