Sua verificação de retrocesso parece funcionar. No entanto, o script para limpar a linha não está funcionando (para mim, com o bash 4.2.37). O loop seguinte
printf '\r'
pode ser substituído por tput
:
tput el1
( antes imprimindo o \r
).