ฉันมีสคริปต์ที่ใช้ 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 ... เช่นรายชื่อไฟล์ที่ถูกส่งจริง./ถ้าไม่มีอะไรที่มีการเปลี่ยนแปลงที่เพียง