Проверьте, активен ли экран, а затем отобразите обратный отсчет

#!/bin/bash
DATE=$(date +"%m-%d-%Y")
Backup_from="/home/mc/server/prison/"
Backup_to="/home/mc/backups/PRISON-$DATE.tar" 

echo "Starting backup of $Backup_from to $Backup_to"
screen -dmS backup tar -zcvpf $Backup_to $Backup_from
if ! screen -list | grep -q "backup"; then
    for i in {10..1};do echo -n "$i." && sleep 1; done 
fi
echo "Done" 

Это мой текущий скрипт резервного копирования, я хочу, чтобы он показывал обратный отсчет, пока экран активен. Но затем остановитесь, когда его неактивен / удален / удален.

1
задан 23 March 2015 в 18:01

1 ответ

Вы хотите сделать некоторый обратный отсчет, , в то время как экран активен? Если так, Вы могли изменить Ваш if и for с while цикл, как это:

while (screen -list backup|grep -q backup); do
    # delay
    sleep 1

    # display another dot
    echo -n .
done

Это отображает точку каждую секунду до Вашего screen, сессия завершается. Что касается обратного отсчета, как Вы даже знали бы надлежащее время начала (сколько секунд для подсчета)?

<час>

Как альтернатива, если Вы хотите повторяющуюся анимацию 3 точек:

# init counter
i=0;
while (screen -list backup|grep -q backup); do
    # delay
    sleep 1

    # display dot
    echo -n "."

    # increase conter
    i=$((i+1))

    # on every 3rd loop...
    if [ $i -gt 3 ]; then
        # ...reset counter...
        i=0

        # ...and clear current line and return the cursor
        echo -en "\r\e[K"
    fi
done 
0
ответ дан 23 March 2015 в 18:01

Другие вопросы по тегам:

Похожие вопросы: