Поэтому, в основном, я хочу, чтобы этот скрипт делал, например, каждые 300 секунд делать копию файла, но поочередно делать файл «savegame.backup1», а затем в следующие 300 секунд передать «savegame.backup2» и затем вернуться для резервного копирования1.
Кажется, мой таймер не повторяется, и я не уверен, как вообще завершить этот сценарий.
Для контекста, большая часть кода, который я использовал, была из Google, часть была сделана с помощью личных знаний Я не могу найти то, что мне не хватает.
Спасибо
#!/bin/bash
GameType="Sandbox" #Sandbox, Survival, etc.
SaveName="07-01-2017_04-52-11" #Make sure you copy the folder name.
Timeout=$((5)) #Timeout in seconds. The default of 300 (5 minutes) is likely adequate.
#No need to change anything below.
GameName="Project Zomboid"
SERVICE=ProjectZomboid64 #Change this to ProjectZomboid32 if you're using 32bit java!
steam steam://rungameid/108600
# Checks to see if folder exists - if not, one will be made.
mkdir -p "$HOME/Zomboid/Saves/Backups/$SaveName"
#Loop start
while [ $Timeout -gt 0 ]; do
clear && echo -ne "Creating a backup in" $Timeout "seconds."
sleep 1
: $((Timeout--))
done
clear
if ps ax | grep -v grep | grep $SERVICE > /dev/null
then
cp "$HOME/Zomboid/Saves/$GameType/$SaveName/map_p.bin" "$HOME/Zomboid/Saves/Backups/$SaveName/map_p.bin.backup1"
#Need to alternate between the two each time it loops. Backup1 the first time, Backup2 the second, Backup1 the third...
#cp "$HOME/Zomboid/Saves/$GameType/$SaveName/map_p.bin" "$HOME/Zomboid/Saves/Backups/$SaveName/map_p.bin.backup2"
echo "$GameName is running. Backup made." #ERROR CHECKING
else
#Loop should end here, and prevent any further repeating of the loop.
read -r -p "$GameName is not detected as running, and no further backups will be made."
fi
echo "Outside of loop." #ERROR CHECKING
sleep 5s
Итак, что вы пытались до сих пор исправить проблему (и), и каковы были результаты? Первое предложение: вы должны перепроверить синтаксис того, как строится цикл While в Bash.
—
Ƭᴇcʜιᴇ007
@ TECHIE007 Я попытался добавить еще один цикл снаружи цикла, а затем еще один цикл внутри цикла. Таким образом, loop1 = бесконечный, loop2 внутри loop1, а затем loop3 внутри loop2. Данный ответ сработал. Вот что у меня сейчас: pastebin.com/yk8k8Yxh но теперь все, что мне нужно, это заставить $ i добавлять +1 каждый раз, когда он проходит, пока он не достигнет $ BackupCount и не сбросится до 1.
—
Interknet
Ох, и результаты были смешанными. То, что я нашел, чтобы добавить в код, просто не сработало, когда я их реализовал. Я учусь, хотя: D
—
Interknet