मेरे पास एक स्क्रिप्ट है जो दूरस्थ -> स्थानीय परिदृश्य में डेटा को सिंक करने के लिए 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 ध्वज स्टडआउट को आउटपुट प्रदान कर सकता है, लेकिन इसे सशर्त ब्लॉक में कैसे रखा जा सकता है?
a=$("rsync command")
। इस पर अमल होगा rsync
कमान और दुकान stdout
में a
। फिर आप परीक्षणों को चला सकते हैंa
| grep /
कुछ भी जोड़ सकते हैं , फिर grep के बाहर निकलने की स्थिति की जाँच करें $?
, अगर कोई आउटपुट नहीं था तो यह 1 होना चाहिए।
-v
वहां पहुंच गए हैं, इसलिए यह पहले से ही आपको आवश्यक जानकारी प्रदान कर रहा है ... उदाहरण के लिए, फ़ाइलों की एक सूची जो वास्तव में भेजी गई थी। अगर कुछ भी नहीं बदला है, तो बस./
।