ดังนั้นโดยทั่วไปสิ่งที่ฉันต้องการให้สคริปต์นี้ทำคือทำสำเนาไฟล์ทุก ๆ 300 วินาที แต่สลับกันระหว่างการทำไฟล์ "savegame.backup1" จากนั้นในครั้งต่อไป 300 วินาทีผ่าน "savegame.backup2" เพื่อ backup1
ตัวจับเวลาของฉันดูเหมือนจะไม่ทำซ้ำและฉันไม่แน่ใจว่าฉันจะทำสคริปต์นี้ให้สมบูรณ์ได้อย่างไร
สำหรับบริบทรหัสจำนวนมากที่ฉันใช้นั้นมาจาก googling บางส่วนทำโดยความรู้ส่วนบุคคล ฉันไม่สามารถค้นหาสิ่งที่มันหายไป
ขอบคุณ
#!/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