#!/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"
Это мой текущий скрипт резервного копирования, я хочу, чтобы он показывал обратный отсчет, пока экран активен. Но затем остановитесь, когда его неактивен / удален / удален.
Вы хотите сделать некоторый обратный отсчет, , в то время как экран активен? Если так, Вы могли изменить Ваш 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