타임스탬프가 업데이트되지 않았습니다.

타임스탬프가 업데이트되지 않았습니다.

코드를 작성했지만 타임스탬프가 업데이트되지 않습니다. 스크립트가 실행되는 동안의 시간을 보여주며, 루프가 실행되어 시간이 바뀌어도 계속 같은 시간을 보여줍니다.

T=$(date)
while [ -f $BACKUP_FILE ]
do
    echo "[$T] Backup is in Progress" | tee -a $LOG_FILE
    sleep 10
done

무엇이 잘못될 수 있나요?

답변1

.. 루프에 넣어야 합니다 T=$(date). 그렇지 않으면 업데이트되지 않습니다(즉, 현재 상태로는 날짜가 코드 상단에서 한 번만 결정됩니다).dowhile

답변2

루프 본문 외부의 변수에 날짜를 한 번 할당하고 루프 내부의 변수를 역참조합니다. 변수의 값은 업데이트되지 않으므로 루프 중에는 원래 라인 1에 할당된 값만 포함됩니다.

원하는 효과를 얻으려면 변수를 완전히 제거하고 date루프 본문 내에서 호출하면 됩니다.

while [ -f "$BACKUP_FILE" ]
do
    echo "[$(date)] Backup is in Progress" | tee -a "$LOG_FILE"
    sleep 10
done

관련 정보