Позволила себе переработать скрипт с целью уменьшения погрешности конечного результата.
вставьте где-то перед своим
let _FINAL="($_INIT+59)%60";
ещё дополнительный "спусковой механизм", чтобы дальнейший цикл начинался только
в начале следующей секунды, а не в любом произвольно промежутке между секундными отсчётами, что-то типа:
_FINAL=$(date +%S)
_INIT=$_FINL
while [ $_FINAL -eq $_INIT ]; do
_INIT=$(date +%S)
done
вместо того единичного у вас оператора, который "выхватывает" произвольную отметку времени, не привязанную к секундной сетке:
_INIT=`date +%S`
В результате: средняя погрешность (0.5±0.1)%
в итоге будете иметь ещё лучше сходимость!
потому как 1-я секунда измерений у вас даёт принципиально неправильное (заниженное) значение по сравнению с остальными 59-ю.
P.S. я же говорил, что измерение временных интервалов есть самое интересное + самое сложное, что есть в многозадачной операционной системе