ฉันมีสคริปต์ที่ใช้ rsync เพื่อซิงค์ข้อมูลในรีโมต -> สถานการณ์จำลองในเครื่อง ทันทีหลังจากรันคำสั่ง rsync การตรวจสอบเพื่อดูว่ารหัสข้อผิดพลาดเท่ากับศูนย์หรือไม่ หากเป็นศูนย์จะดำเนินการคำสั่งเพิ่มเติม อย่างไรก็ตามสิ่งนี้ไม่ได้คำนึงถึงข้อเท็จจริงที่ว่า rsync อาจทำงานได้สำเร็จ แต่ไม่ได้ทำการเปลี่ยนแปลงใด ๆ ด้วยเหตุนี้สภาพศูนย์เท่ากับจะทำงานโดยไม่คำนึงถึงซึ่งซ้ำซ้อนเล็กน้อย
rsync -aEivm --delete /path/to/remote/ /path/to/local/
if [ $? -eq 0 ]; then
# Success do some more work!
else
# Something went wrong!
exit 1;
fi
สิ่งที่จะเป็นวิธีที่ดีที่สุดในการขยายสิ่งนี้เพื่อตรวจสอบว่ามีการเปลี่ยนแปลงจริง ๆ ตามคำสั่ง rsync ที่รันหรือไม่ ฉันอ่านแล้วว่าแฟล็ก -i สามารถให้เอาต์พุตกับ stdout ได้ แต่จะวางสิ่งนี้ในบล็อกที่มีเงื่อนไขได้อย่างไร
a=$("rsync command")
คุณสามารถใช้ นี้จะดำเนินการrsync
สั่งการและการจัดเก็บในstdout
a
จากนั้นคุณสามารถเรียกใช้การทดสอบบนa
| grep /
หรืออะไรทำนองนั้นจากนั้นตรวจสอบสถานะการออกของ grep ด้วย$?
ควรเป็น 1 หากไม่มีผลลัพธ์
-v
อยู่ที่นั่นดังนั้นมันจึงให้ข้อมูลที่คุณต้องการในการ stdout ... เช่นรายชื่อไฟล์ที่ถูกส่งจริง./
ถ้าไม่มีอะไรที่มีการเปลี่ยนแปลงที่เพียง