ऑनवर्क्स लिनक्स और विंडोज ऑनलाइन वर्कस्टेशन

प्रतीक चिन्ह

वर्कस्टेशन के लिए मुफ्त होस्टिंग ऑनलाइन

<पिछला | विषय-सूची | अगला>

इनपुट मान्य करना

कीबोर्ड इनपुट की हमारी नई क्षमता के साथ एक अतिरिक्त प्रोग्रामिंग चुनौती आती है, इनपुट को मान्य करना। अक्सर एक अच्छी तरह से लिखे गए कार्यक्रम और एक खराब लिखे गए कार्यक्रम के बीच का अंतर कार्यक्रम की अप्रत्याशित से निपटने की क्षमता में निहित होता है। अक्सर, अप्रत्याशित ख़राब इनपुट के रूप में प्रकट होता है। हमने पिछले अध्याय में अपने मूल्यांकन कार्यक्रमों के साथ इसमें से कुछ किया है, जहां हमने पूर्णांकों के मानों की जांच की और जांच की


खाली मानों और गैर-संख्यात्मक वर्णों को बाहर निकालें। अमान्य डेटा से बचाव के लिए, जब भी कोई प्रोग्राम इनपुट प्राप्त करता है तो इस प्रकार की प्रोग्रामिंग जांच करना महत्वपूर्ण है। यह उन प्रोग्रामों के लिए विशेष रूप से महत्वपूर्ण है जो एकाधिक उपयोगकर्ताओं द्वारा साझा किए जाते हैं। यदि किसी कार्यक्रम का उपयोग केवल एक बार और केवल लेखक द्वारा किसी विशेष कार्य को करने के लिए किया जाना है तो अर्थव्यवस्था के हित में इन सुरक्षा उपायों को छोड़ना माफ किया जा सकता है। फिर भी, यदि प्रोग्राम फ़ाइलों को हटाने जैसे खतरनाक कार्य करता है, तो डेटा सत्यापन को शामिल करना बुद्धिमानी होगी।

यहां हमारे पास एक उदाहरण प्रोग्राम है जो विभिन्न प्रकार के इनपुट को मान्य करता है:



#! / Bin / bash

# पढ़ें-मान्य करें: मान्य इनपुट अमान्य_इनपुट () {

प्रतिध्वनि "अमान्य इनपुट '$उत्तर'" >&2 निकास 1

}


पढ़ें -p "एकल आइटम दर्ज करें > "


# इनपुट खाली है (अमान्य)

[[ -z $उत्तर ]] && अमान्य_इनपुट


# इनपुट एकाधिक आइटम है (अमान्य)

(( $(गूंज $उत्तर | wc -w) > 1 )) && अमान्य_इनपुट


# क्या इनपुट एक वैध फ़ाइल नाम है?

यदि [[ $उत्तर =~ ^[-[:alnum:]\._]+$ ]]; फिर प्रतिध्वनि करें "'$REPLY' एक वैध फ़ाइल नाम है।"

यदि [[ -ई $उत्तर ]]; तब

इको "और फ़ाइल '$रिप्लाई' मौजूद है।"

अन्य

इको "हालाँकि, फ़ाइल '$REPLY' मौजूद नहीं है।"

fi


# क्या इनपुट एक फ़्लोटिंग पॉइंट नंबर है?

यदि [[ $उत्तर =~ ^-?[[:अंक:]]*\.[[:अंक:]]+$ ]]; फिर प्रतिध्वनि करें "'$उत्तर' एक फ़्लोटिंग पॉइंट नंबर है।"

अन्य

इको "'$रिप्लाई' एक फ़्लोटिंग पॉइंट नंबर नहीं है।"

fi


# क्या इनपुट एक पूर्णांक है?

यदि [[ $उत्तर =~ ^-?[[:अंक:]]+$ ]]; फिर प्रतिध्वनि करें "'$उत्तर' एक पूर्णांक है।"

अन्य

इको "'$रिप्लाई' एक पूर्णांक नहीं है।"

#! / Bin / bash

# पढ़ें-मान्य करें: मान्य इनपुट अमान्य_इनपुट () {

प्रतिध्वनि "अमान्य इनपुट '$उत्तर'" >&2 निकास 1

}


पढ़ें -p "एकल आइटम दर्ज करें > "


# इनपुट खाली है (अमान्य)

[[ -z $उत्तर ]] && अमान्य_इनपुट


# इनपुट एकाधिक आइटम है (अमान्य)

(( $(गूंज $उत्तर | wc -w) > 1 )) && अमान्य_इनपुट


# क्या इनपुट एक वैध फ़ाइल नाम है?

यदि [[ $उत्तर =~ ^[-[:alnum:]\._]+$ ]]; फिर प्रतिध्वनि करें "'$REPLY' एक वैध फ़ाइल नाम है।"

यदि [[ -ई $उत्तर ]]; तब

इको "और फ़ाइल '$रिप्लाई' मौजूद है।"

अन्य

इको "हालाँकि, फ़ाइल '$REPLY' मौजूद नहीं है।"

fi


# क्या इनपुट एक फ़्लोटिंग पॉइंट नंबर है?

यदि [[ $उत्तर =~ ^-?[[:अंक:]]*\.[[:अंक:]]+$ ]]; फिर प्रतिध्वनि करें "'$उत्तर' एक फ़्लोटिंग पॉइंट नंबर है।"

अन्य

इको "'$रिप्लाई' एक फ़्लोटिंग पॉइंट नंबर नहीं है।"

fi


# क्या इनपुट एक पूर्णांक है?

यदि [[ $उत्तर =~ ^-?[[:अंक:]]+$ ]]; फिर प्रतिध्वनि करें "'$उत्तर' एक पूर्णांक है।"

अन्य

इको "'$रिप्लाई' एक पूर्णांक नहीं है।"

इनपुट मान्य करना


फाई अन्य

इको "स्ट्रिंग '$रिप्लाई' एक वैध फ़ाइल नाम नहीं है।"

fi

फाई अन्य

इको "स्ट्रिंग '$रिप्लाई' एक वैध फ़ाइल नाम नहीं है।"

fi


यह स्क्रिप्ट उपयोगकर्ता को एक आइटम दर्ज करने के लिए संकेत देती है। बाद में आइटम की सामग्री निर्धारित करने के लिए उसका विश्लेषण किया जाता है। जैसा कि हम देख सकते हैं, स्क्रिप्ट उन कई अवधारणाओं का उपयोग करती है जिन्हें हमने अब तक कवर किया है, जिसमें शेल फ़ंक्शंस शामिल हैं, [[]], (( )), नियंत्रण ऑपरेटर

&&, और यदि, साथ ही नियमित अभिव्यक्तियों की एक स्वस्थ खुराक।


OnWorks पर शीर्ष OS क्लाउड कंप्यूटिंग: