기본적으로이 스크립트에서하고 싶은 것은 예를 들어 300 초마다 파일의 복사본을 만드는 것이지만 "savegame.backup1"파일을 만든 다음 다음에 300 초가 "savegame.backup2"를 전달한 다음 다시 백업 1.
타이머가 반복되지 않는 것 같습니다.이 스크립트를 어떻게 완성 할 수 있을지 잘 모르겠습니다.
맥락 상, 내가 사용한 많은 코드는 인터넷 검색에서 나온 것이며 일부는 개인 지식으로 수행되었습니다. 누락 된 항목을 찾을 수 없습니다.
감사
#!/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
그래서 지금까지 문제를 해결하기 위해 무엇을 시도했으며 결과는 무엇입니까? 첫 번째 제안 : Bash에서 While 루프가 구성되는 방식에 대한 구문을 다시 확인해야합니다.
—
Ƭᴇcʜιᴇ007
@ TECHIE007 루프 외부에 다른 루프를 추가하고 루프 내에서 다른 루프를 추가하려고했습니다. 따라서 loop1 = 무한, loop1 내부의 loop2, loop2 내부의 loop3. 주어진 대답이 효과가있었습니다. 여기에 내가 가진 무엇 지금 : pastebin.com/yk8k8Yxh 하지만 지금 필요한 모든 그것이 $ BACKUPCOUNT에 도달 할 때까지, $ 내가 추가 한 것이이 통과 할 때마다 확인하는 것입니다과 1 자체를 재설정
—
Interknet
아 그리고 결과는 섞였다. 내가 코드에 추가 한 것들을 구현했을 때 작동하지 않는 것 같습니다. 나는 배우고 있지만 : D
—
Interknet