Я бы использовал утилиту date
, чтобы получить текущее время в секундах.
#!/bin/bash
lastTime=-5
while true
do
currentTime=$(date +%s)
elapsedTime=$((currentTime - lastTime))
if [[ $elapsedTime -ge 5 ]]
then
echo 'Something different'
lastTime=$currentTime
i=0
else
# process of random duration; not important
r=$(( 1 + RANDOM % 3 ))
sleep ${r}s
i=$((i + r))
echo $i
fi
done
Редактировать: Изменено начальное значение lastTime
, так что оно также "делает что-то другое" в начале.