युनिक्स शेल-बेस्ड, पॉसिक्स-कंपिलियंट संगणक भाषा वापरुन बॅशमध्ये फंक्शन्स कशी वापरावी. एक भाषेच्या रूपात, फंक्शनमध्ये लिनक्स कमांडसच्या स्पष्टीकरणांचा समावेश आहे, ज्यामुळे आपल्याला आमच्या पुनरावृत्ती प्रक्रिया स्वयंचलित करता येतील आणि ऑपरेटिंग सिस्टम कमांडस कमांड देखील तयार करता येतील. या लेखात आम्ही पुनरावलोकन करू बॅश मध्ये फंक्शन्स कशी वापरावी. मी लेख वाचण्याची शिफारस करतो बॅश वापरून आपल्या स्वतःच्या स्क्रिप्ट तयार करा.
आम्ही प्रस्तावित केलेल्या स्क्रिप्टमध्ये फाईलचे नाव जाणून घेत आपण बाश भाषा वापरतो. यासाठी आम्ही हे वापरू आज्ञा शोधा परंतु आधी सांगितलेल्या स्क्रिप्टमध्ये फंक्शन्सच्या मदतीने. आपल्याला बाशची वैशिष्ठ्य किंवा मर्यादा लक्षात घ्यावी लागेल जी सर्व भाषांमध्ये उपलब्ध नाही: फंक्शन कॉल करण्यासाठी ते परिभाषित केले जाणे आवश्यक आहे पूर्वी
निर्देशांक
कार्ये परिभाषित करा
कार्ये परिभाषित करण्याचे दोन मार्ग आहेतः कार्य घोषणेसह किंवा त्याशिवाय:
function nombre_funcion () { # codigo }
किंवा हा दुसरा, जो मी वापरत आहे तो आपण नंतर पाहू शकाल.
nombre_funcion () { # codigo }
तसेच बाश पॅरामीटर्स पास करण्याची आणि रिझल्ट निकाल देण्याची पद्धत देखील प्रदान करते. जे आपण भविष्यातील लेखात पाहू.
#!/usr/bin/env bash # ~/.bin/encontrar # encuentra archivos a partir de la descripción de su nombre en un directorio específico # # Por Pedro Ruiz Hidalgo # version 1.0.0 # Copyright © enero 2017 # # EXIT_OK=0 EXIT_BAD=66 PATRON=$1 DIRECTORIO=$2 autor () { echo -e "\nPedro Ruiz Hidalgo @petrorum. Copyright © 2017\n" } ayuda () { echo -e "\nencontrar [PATRON] [DIRECTORIO]\n" } noparams () { echo -e "\nSon necesarios dos parámetros\nencontrar -h para ayuda\n" read -p "¿Quieres ver la ayuda? (S|s)" -n 1 -r if [[ $REPLY =~ ^[Ss]$ ]]; then echo "" ayuda fi } nodir () { echo -e "\nDirectorio no Existe\n" } if [[ $PATRON == "-h" ]]; then ayuda exit $EXIT_OK fi if [[ $PATRON == "-a" ]]; then autor exit $EXIT_OK fi if [ $# -lt 2 ]; then noparams else if [ -d $DIRECTORIO ]; then echo "" find $DIRECTORIO -name $PATRON* echo "" exit $? else nodir exit EXIT_BAD fi fi
स्क्रिप्ट विश्लेषण
व्याख्या
बॅशसाठी यशस्वीरित्या पूर्ण झालेल्या प्रत्येक प्रक्रियेस सिग्नल म्हणून "0" कोड असणे आवश्यक आहे. 12 आणि 13 रेषा हाताळलेल्या एरर कोडची व्याख्या करतात यशासाठी EXIT_OK y अपयशी झाल्यावर बाहेर पडण्यासाठी EXIT_BAD.
15 आणि 16 ओळींमध्ये, PATTERN आणि DIRECTORY व्हेरिएबल्सला स्क्रिप्टच्या नावानंतर कमांड लाइनवर दिसणारे पहिले ($ 1) आणि सेकंड ($ 2) पॅरामीटर्स दिले गेले आहेत, जेव्हा आपण हे कार्यान्वित केल्यावर नंतर पाहू.
मध्ये ओळ 18 आपण आपले पहिले फंक्शन तयार करू. «लेखक called नावाचे कार्य हे प्रदर्शित करते स्क्रिप्ट लेखकत्व जेव्हा आम्ही याला "-a" वितर्कसह कॉल करतो तेव्हा आपण ओळीवर 50 ~ 54 वर if मध्ये पाहू शकता. युक्तिवाद "-आणि" ओळ 23 पासून एन्कोडिंगद्वारे «पुढील ओळ of चा क्रम दर्शविण्यास अनुमती देते« \ n ».
नोपारामवर कॉल (28 37 31 ओळी) कोणत्याही घटकाशिवाय स्क्रिप्ट कॉल केल्यावर उद्भवणा must्या कार्यक्रमांचे व्यवस्थापन करण्यासाठी प्रभारी आहे. आम्ही दर्शवितो, नवीन लाइन कोड दरम्यान योग्यरित्या बंद केलेला, एक संदेश दर्शवितो की स्क्रिप्ट दोन पॅरामीटर्ससह चालविला जाणे आवश्यक आहे, नंतर एक पर्याय (ओळ XNUMX) वापरण्यासाठी दर्शविला जाईल वाचा आपण मदत दर्शवू इच्छित असल्यास "एस" किंवा "एस" दाबा असे सूचित करते. 32 ओळीत आपण अक्षरशः म्हणतो: उत्तर असल्यास (हे व्हेरिएबलमध्ये आपल्याकडे येते.) PL उत्तर द्या) मध्ये अपरकेस किंवा लोअरकेस 'असे कोणतेही वर्ण आहेत, त्यानंतर (ओळ 33) रिक्त रेखा दर्शविते (रेखा 34) आणि मदत कार्य चालवते (ओळी 23 ~ 26)
शोध शोधण्याचा प्रयत्न करत असलेली निर्देशिका अस्तित्त्वात नाही हे आम्हाला आढळले की नोडर फंक्शन (ओळी 39 ~ 42) कार्यान्वित केले जातील.
कार्यक्षमता
यासह आमच्याकडे आधीच आहे सर्व आवश्यक कार्ये परिभाषित केली आमचा प्रोग्रॅम कार्यान्वित करण्यासाठी, जो प्रत्यक्षात लाइन 44 line वर सुरू होईल, स्क्रिप्ट प्राप्त झालेल्या पॅरामीटर्सपैकी पहिले "-h" आहे का ते तपासून, ते खरे असल्यास मदत फंक्शन कार्यान्वित करा. सामान्य समाप्ती दर्शविणारा बाहेर पडतो.
जर पॅटरएन (लाइन १ 15 मध्ये वर्णन केल्यानुसार पहिले पॅरामीटर) "-ए" असेल तर, "-h" पर्यायासाठी मागील परिच्छेदात स्पष्ट केलेल्या समान पद्धतीनुसार लेखक प्रदर्शित होईल.
रेषेवर 56 हे नियंत्रित केले आहे की आम्हाला दोन पॅरामीटर्सपेक्षा कमी प्राप्त झाले नाहीया प्रकरणात, नोपाराम फंक्शन कार्यान्वित केले जाते, तर जेव्हा ओळीच्या 60० मध्ये आपण शोधू ज्या डिरेक्टरीवर आपल्याला शोध घ्यायचा आहे तो अस्तित्वात असल्यास, अस्तित्वात असल्यास, एक रिकामी ओळ दर्शविली जाईल आज्ञा शोधा आपण ज्या डिरेक्टरीवर शोध घेऊ इच्छित आहात त्या पत्त्यासह नमुना (ज्या फाईलच्या आपण शोधत आहात त्या नावाची सुरूवात) नवीन कोरी ओळ वापरुन आणि बाहेर पडा $? आम्ही आमच्या स्क्रिप्टचे आऊटपुट सापडलेल्या परिणामाकडे सोपवितो. जर अट निर्देशिका अस्तित्त्वात नाही (ओळ 67) आम्ही नोडिर फंक्शनला कॉल करतो आणि आम्ही एक असामान्य समाप्ती दर्शविणारी बाहेर पडतो.
अंमलबजावणी आणि चाचणी
$ encontrar $ encontrar -a $ encontrar -h $ encontrar index aljflaskjf #directorio no existe $ encontrar index public_html $
En बाश बद्दल खालील लेख आम्ही यासाठी यंत्रणा पाहू फंक्शन्स मध्ये पॅरामीटर्स वापराकसे ते देखील आपण पाहू रिटर्न डेटा स्पष्ट करा त्याच पासून
मला आशा आहे आणि आशा आहे की हे पोस्ट आपल्यासाठी उपयुक्त ठरले आहे.
एक टिप्पणी, आपले सोडून द्या
हाय,
खूप मनोरंजक आणि अगदी स्पष्ट
फक्त एक टीप; EXIT_BAD व्हेरिएबलच्या समोर line 68 च्या ओळीवर गहाळ आहे.
मी आपल्या लेखांसह निश्चितपणे शिकत आहे.