मेरे पास मेरी शेल स्क्रिप्ट में कोड नीचे है जो सोते रहेंगे यदि उसे कोई फ़ाइल नहीं मिलती है। और यह आधे घंटे तक सोता है लेकिन वर्तमान में मेरे पास कोई काउंटर नहीं है जैसे कि नीचे दिए गए कोड को केवल 20 बार निष्पादित करें और फिर प्रोग्राम से बाहर निकलें यदि फाइलें अभी भी नहीं हैं (मतलब 20 चेक के बाद कुछ भी नहीं करते हैं और बाहर निकलें पूर्ण लिपि)।शेल स्क्रिप्ट में काउंटर जोड़ना
इस समस्या को करने का सबसे अच्छा तरीका क्या है? ताकि मैं उन ईमेल को देखकर भी जागरूक हूं जिन्हें उसने 20 बार कोशिश की है।
आशा है कि मैं काफी स्पष्ट हूं।
while true; do
if /home/hadoop/latest/bin/hadoop fs -ls /apps/hdtech/bds/quality-rt/dt=$DATE_YEST_FORMAT2 then
echo "Files Present" | mailx -s "File Present" -r [email protected] [email protected]
break
else
echo "Sleeping for half an hour" | mailx -s "Time to Sleep Now" -r [email protected] [email protected]
sleep 1800
fi
done
सुझाव के लिए धन्यवाद सैम्पसन। 'Elif' में' ब्रेक 'करने के बजाय क्या मैं स्क्रिप्ट से बाहर निकल सकता हूं? मैं यह क्यों पूछ रहा हूं क्योंकि 'पूर्ण' लाइन के बाद मेरे पास निष्पादित करने के लिए बहुत अधिक कोड है, इसलिए फाइलें मौजूद थीं लेकिन काउंटर की इस जांच को जोड़ने के बाद, मैं उन कोड को निष्पादित नहीं करना चाहता था यदि फाइलें अभी भी नहीं हैं तो 20 बार जांच कर रहे हैं। – ferhan
@TechGeeky स्क्रिप्ट से बाहर निकलने के लिए, 'बाहर निकलें 0' (अगर अपेक्षित के रूप में समाप्त हो रहा है) या' बाहर निकलें 1 '(यदि समाप्त हो रहा है और आप कुछ त्रुटि इंगित करना चाहते हैं) –
मैंने उपरोक्त कोड की कोशिश की और मुझे अपवाद मिल रहा है 'काउंटर = $ ((काउंटर + 1)) 'यह लाइन' $ 'अप्रत्याशित है। ऐसा क्यों है? मैं उपरोक्त स्क्रिप्ट को 'sh -x test1.sh' – ferhan