2012-02-05 22 views
16

मेरे पास एक ऐसी स्क्रिप्ट है जो एक ईमेल भेजती है जो दूसरों की एक श्रृंखला में एक स्क्रिप्ट है।बाश, जांचें कि फ़ाइल मौजूद है या नहीं और 0 से बाहर निकलें

स्क्रिप्ट की शुरुआत में मैं यह जांचना चाहता हूं कि कोई फ़ाइल मौजूद है या नहीं, केवल तभी जारी रहें, अन्यथा बस छोड़ दें।

यहाँ मेरी स्क्रिप्ट की शुरुआत है:

{ 
if [ ! -f /scripts/alert ]; 
then 
    echo "File not found!" && exit 0 
else 
     continue 
fi 
} 

हालांकि मुझे यह संदेश प्राप्त हो रही है:

line 10: continue: only meaningful in a `for', `while', or `until' loop 

किसी भी संकेत दिए गए?

+2

आपको यहां 'जारी रखने' की आवश्यकता क्यों है? –

उत्तर

24

इस के बदले यह:

{ 
if [ ! -f /scripts/alert ]; then 
    echo "File not found!" 
    exit 0 
fi 
} 

सशर्त एक पाश नहीं है, और कोई जगह आप के लिए कूद करने की जरूरत है। वैसे भी सशर्त के बाद निष्पादन जारी रहता है।

(मैं भी अनावश्यक && हटा दिया। ऐसा नहीं है कि यह होना चाहिए, लेकिन सिर्फ मामले में echo वहाँ बाहर निकलने के लिए नहीं कोई कारण नहीं है विफल रहता है।)

+0

धन्यवाद आपके स्पष्टीकरण के बाद और अधिक समझ में आता है :) – user1190083

+1

+1 जारी रखने के लिए और विफल होने में असफल होने में विफल होने के लिए +1। –

1

हां। else continue ड्रॉप करें। यह पूरी तरह से अनियंत्रित है।

1

आपकी समस्या continue लाइन के साथ है जो आमतौर पर for या while लूप के अगले पुनरावृत्ति पर जाने के लिए उपयोग की जाती है।

इसलिए आपकी स्क्रिप्ट के else भाग को हटाने से इसे काम करने की अनुमति मिलनी चाहिए।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^