Você precisa colocar T=$(date)
dentro do seu do
.. while
loop ou ele nunca será atualizado (ou seja, como está, a data é determinada apenas uma vez na parte superior do seu código).
Eu escrevi um trecho de código, mas o registro de data e hora não está sendo atualizado. Ele exibe a hora em que o script é executado e continua exibindo a mesma hora, mesmo quando o loop está em execução e o tempo está sendo alterado.
T=$(date)
while [ -f $BACKUP_FILE ]
do
echo "[$T] Backup is in Progress" | tee -a $LOG_FILE
sleep 10
done
O que poderia estar errado?
Você está atribuindo a data uma vez a uma variável fora do corpo do loop e desreferenciando essa variável dentro do loop. O valor na variável nunca é atualizado, portanto, durante a duração do loop, ele sempre conterá o valor inicialmente atribuído na linha 1.
Para obter o efeito que você deseja, elimine completamente a variável e apenas chame date
dentro do corpo do loop:
while [ -f "$BACKUP_FILE" ]
do
echo "[$(date)] Backup is in Progress" | tee -a "$LOG_FILE"
sleep 10
done
Tags linux shell-script