बाश स्क्रिप्ट वापरुन डीएनआय अक्षराची गणना करणे जाणून घ्या

समाधानी झाल्यानंतर आवश्यकता साठी बॅश स्क्रिप्ट्स चालविण्यात सक्षम व्हा, आणि समजून घ्या कार्ये कशी परिभाषित करावी, कसे ते शिका बॅश फंक्शन मधील रिटर्न व्हॅल्यूज. त्यासाठी आपण बॅशमध्ये एक छोटासा पण शक्तिशाली प्रोग्राम तयार करणार आहोत डीएनआयच्या अक्षराची गणना करा. माझ्याकडे चांगली बातमी आहे: बॅश देखील करू शकतात विंडोज 10 वर स्थापित केले जा. ऑपरेटिंग सिस्टममध्ये लिनक्सची सर्व शक्ती काय जोडली जाऊ शकते यासह, समजूया ... भिन्न.

सर्व प्रथम, आम्हाला पाहिजे कसे ते समजून घ्या सबस्ट्रिंग्स, ज्याची भाषा कोणत्याही भाषेप्रमाणे आहे स्ट्रिंगचे काही भाग परत करा साखळी, स्थिती आणि विभागाची लांबी या संकेत पासून. चला या वागण्याचे उदाहरण पाहू. आम्ही यासह आपली स्क्रिप्ट तयार करतो

$ touch prueba_substring
$ 

मग आम्ही आपल्या पसंतीच्या संपादकासह खालील कोड जोडा. टर्मिनल मोडमध्ये माझे आवडते संपादक मिसेडिट आहे. पण अलीकडे मी नॅनोला सामर्थ्य प्राप्त होत आहे हे दिसेल.

 
#!/usr/bin/env bash 
# Demo comportamiento de substrings en Bash 
# Pedro Ruiz Hidalgo 
# version 1.0.0 
# Febrero 2017 

ret="\n" 
CADENA="siempre uso Linux con Ubuntu y Ubunlog, claro!" 
#      "0123456789012345678901234567890123456789012345" 
#      "          1         2         3         4     " 
# (usa la regla para medir los caracteres) 

echo -e $ret ${CADENA:12} 
echo -e $ret ${CADENA:12:5} 
echo -e $ret "Aprendo en ${CADENA:31:7}" 
exit 0 

परवानग्या जोडणे आणि याप्रमाणे अंमलात आणणे:

$ chmod +x prueba_substring
$ ./prueba_substring
$

हे, जर सर्व काही ठीक झाले असेल तर खालील निकाल परत द्यावा:

 Linux Con Ubuntu y Ubunlog, claro!

 Linux

 Aprendo en Ubunlog

सबस्ट्रिंग ऑपरेशन

जसे आपण वर पाहू शकता मी 13 ते 15 ओळी ठळक केल्या आहेत स्क्रिप्ट आणि चरणातून आपला कोड समजावून सांगा. प्रतिध्वनी सह "-e" पॅरामीटर चला दाखवू पुढील ओळ वर्णहे अक्षर आपण परिभाषित केले आहे ओळ 7 आणि व्हेरिएबलला assigned ret »असाइन केले.

ओळ 13: मी सबस्ट्रिंग दर्शवितो (सब्स्ट्रिंग) CHAIN ​​व्हेरिएबलचे, ओळ 8 मध्ये वर्णन केले आहे, स्थिती 12 पासून. नेहमी 0 वरून गणना करणे सुरू करा.

ओळ 14: पासून CHAIN ​​व्हेरिएबलच्या 12 व्या स्थानावर, मी 5 चे विभाग दर्शवितो. जसे आपण सत्यापित कराल तसे "लिनक्स" सब्स्ट्रिंग.

ओळ 15: मी लिखित ए नवीन स्ट्रिंग कोट मध्ये बंद मी CHAIN ​​व्हेरिएबलच्या सबस्ट्रिंगसह सुरू ठेवण्यासाठी «मी शिकतो as म्हणून प्रारंभ करतो 31 वरून, 7 चा विभाग घेऊन: हे परस्पर «Ubunlog».

पोस्टबॅक कार्ये

बाश बरोबर रिटर्न मेकॅनॅसीज "रिटर्न" कमांडद्वारे तयार केली जाते, जरी जेव्हा आपल्याला ती बॅश व्हेरिएबलशी जुळवायची असते, तर ते "विचित्र" यंत्रणा लागू करते, ज्याची आपल्याला सवय लागावी लागेल. चला खालील उदाहरण पाहू:

#!/usr/bin/env bash

function suma(){
  local a=$1
  local b=$2
  return $(( $a + $b ))
}

suma 12 23
retorno=$?
echo $retorno

बाशमध्ये वापरण्यापूर्वी कार्ये नेहमीच परिभाषित करणे आवश्यक आहेम्हणून, नंतर शेबॅंग आम्ही 4 व्या ओळीवर फंक्शन बेरीज घोषित करतो आम्ही पॅरामीटर्सच्या प्रथम असाइनमेंट «स्थानिक means द्वारे परिभाषित करतो ($ 1) व्हेरिएबल "अ" पर्यंत ओळ 5 वर समान प्रक्रिया, जिथे आम्ही व्हेरिएबल «b to ला दुसरे पॅरामीटर a ($ 2) प्रदान करतो.. लाइन नऊ मध्ये आम्ही दोन पॅरामीटर्ससह बेरीज फंक्शन कॉल करतो जे मध्ये वर्णन केलेल्या यंत्रणाद्वारे रूपांतरित केले जातील व्हेरिएबल्स "ए" आणि "बी" आणि "रिटर्न" सह आम्ही ते परत जोडतो, फंक्शन सूचनांमध्ये सहजपणे पाहिले जाऊ शकते.

मध्ये "रिटर्न" व्हेरिएबल देऊ ओळ 10 फंक्शन बेरीजच्या अंमलबजावणीचा परिणाम.

अभ्यास आणि कोणत्या मार्गाने समजून घेतल्यानंतर व्हेरिएबल्सची व्हॅल्यू रिटर्न आणि असाईनमेंटचा सराव केला जातो चला आपला प्रोग्राम पाहण्यासाठी जाऊया बाश सह डीएनआय अक्षरे गणना.

बाश सह डीएनआय अक्षरे मोजण्यासाठी स्क्रिप्ट

#!/usr/bin/env bash

nl="\n"

LETRAS="TRWAGMYFPDXBNJZSQVHLCKEO"
NORMAL=0
ERROR=66

if [ $# -lt 1 ];
then
	echo -e "$nl Cálculo DNI, introduce número$nl"
	read -r ndni
	[ -z "${ndni//[0-9]}" ] && [ -n "$ndni" ] || echo "Sólo números" && exit $ERROR
else
	ndni=$1
fi

modulo ()
{
	return $(( $ndni  % 23 ))
}

modulo ndni
mod=$?
echo $ndni-${LETRAS:$mod:1}
exit $NORMAL

La आमच्या डीएनआय चे पत्र अनुरूप संख्या मॉड्यूल 23. हे आहे, आम्ही संख्या 23 ने विभागू y भागाकडे पाहण्याऐवजी, आम्ही बाकीचे विभाग पाळतो. इतर शब्द, जसे 23 ने भागाकार संख्या शून्य देईल, पत्र की ते परस्पर आहे «टी isया पासून स्थिती 0 आहेजसे आपण वरील स्क्रिप्टमध्ये पाहिले आहे, सर्व उपस्ट्रिंग्ज शून्यापासून मोजणे सुरू करतात. म्हणजेच मॉड्यूलद्वारे आम्ही नेहमीच नंबर मिळवू 0 (अक्षर "टी") आणि 22 (अक्षरे "ओ") दरम्यान. बाशमध्ये, इतर भाषांप्रमाणे मॉड्यूल टक्केवारी ऑपरेटर «% of द्वारे प्राप्त केले जाते.

मध्ये ओळ 5 आम्ही अक्षरे परिभाषित करतो आपल्या क्रमाने हे स्पष्ट आहे, ऑर्डर बदलली जाऊ शकत नाही विश्वसनीय परिणामांसाठी. ओळीच्या if मध्ये 9 आम्ही विचारत आहोत स्क्रिप्टला कॉल करताना पॅरामीटर म्हणून एक नंबर होता. कोणतेही पॅरामीटर नसल्यास, आम्ही 11 ते 13 ओळींवरील सूचनांसह कीबोर्डवर विनंती करतो. जर स्क्रिप्टला 15 व्या क्रमांकाच्या क्रमाने गणना करण्यासाठी कॉल केले गेले असेल तर, हे पॅरामीटर assign ndni »वर द्या.

ओळ 23 मध्ये आम्ही पॅरामीटरद्वारे मॉड्यूलो फंक्शनचा संदर्भ घेतो चल «ndni», एकतर हे बॅशमधील पॅरामीटर म्हणून किंवा कीबोर्डद्वारे इनपुट म्हणून संकलित केले गेले आहे. लाइन 24 मध्ये फंक्शनचे रिटर्न «मॉड» व्हेरिएबलला दिले गेले आहे. 25 मीटरच्या मार्गावरआम्ही संख्या, एक डॅश आणि मॉड्यूलस आणि सबस्ट्रिंगच्या गणनानुसार स्थितीशी संबंधित अक्षर दर्शवितो..

आमच्या डीएनआय स्क्रिप्टची चाचणी घेत आहे

$ ./dni 12345678
12345678-Z

ठीक आहे,

$ ./dni

 Cálculo DNI, Introduce número

आमच्या सर्व स्क्रिप्टमध्ये लेखकासाठी "-ए" पॅरामीटर आणि मदत आणि वाक्यरचनासाठी दुसरे "-h" समाविष्ट असले पाहिजे. आम्ही मागील लेखांमध्ये पाहिले आहे किंवा कोड अधिक अवजड बनवू नये म्हणून मी आपल्याकडे सोडले आहे.
मला आशा आहे आणि आशा आहे की हा लेख आपल्या आवडीचा असेल.


आपली टिप्पणी द्या

आपला ई-मेल पत्ता प्रकाशित केला जाणार नाही. आवश्यक फील्ड चिन्हांकित केले आहेत *

*

*

  1. डेटा जबाबदार: मिगुएल Áन्गल गॅटन
  2. डेटाचा उद्देशः नियंत्रण स्पॅम, टिप्पणी व्यवस्थापन.
  3. कायदे: आपली संमती
  4. डेटा संप्रेषण: कायदेशीर बंधन वगळता डेटा तृतीय पक्षास कळविला जाणार नाही.
  5. डेटा संग्रहण: ओकेन्टस नेटवर्क (EU) द्वारा होस्ट केलेला डेटाबेस
  6. अधिकारः कोणत्याही वेळी आपण आपली माहिती मर्यादित, पुनर्प्राप्त आणि हटवू शकता.

  1.   उमर बी.एम. म्हणाले

    हॅलो, कोणीतरी मला मदत करू शकेल का, मला माझ्या जुन्या डेस्कटॉपवर लुबंटू स्थापित करण्याची आवश्यकता आहे परंतु ते मला यूएसबीद्वारे स्थापित करू देणार नाही आणि डीव्हीडी ड्राइव्ह खराब झाली आहे, मला फक्त स्थापित करायचे आहे http://www.plop.at उबंटूला 16.04 एलटीएस पर्यंत पण मला ते कसे करावे हे माहित नाही. धन्यवाद

    1.    पेड्रो रुईझ हिडाल्गो प्लेसहोल्डर प्रतिमा म्हणाले

      ओमर,

      जसे आपण नमूद केले आहे, परिस्थिती फारशी आशादायक नाही: यूएसबीला परवानगी नाही आणि डीव्हीडी ड्राइव्ह खराब झाली आहे. परंतु आपण ही टिप्पणी देखील दिली की "संगणक जुना आहे", म्हणजे आपल्याकडे एक नवीन आहे. आपल्या कार्यरत संगणकावरून हार्ड ड्राइव्हवर स्थापना लावण्याचा प्रयत्न करा आणि त्या ड्राइव्हवरून स्थापित करण्याचा प्रयत्न करा.

      कोट सह उत्तर द्या

    2.    सीझर डेलबा म्हणाले

      आपल्याकडे संगणक आणि काढण्यायोग्य बॉक्स आहे? काढण्यायोग्य यूएसबी बॉक्समध्ये जुन्या संगणकाची हार्ड ड्राइव्ह माउंट करा आणि स्थापना डिस्क सुरू करा.
      लिनक्स आणि युनिक्स बूट स्तरावर हार्डवेअर विचारात घेत नाहीत, ज्याद्वारे आपण लिनक्स स्थापित करून डिस्क पुन्हा ठेवू शकता.

    3.    उमर बी.एम. म्हणाले

      धन्यवाद मी तुम्हाला सांगतो की मी जे उबंटू 16.04 वरून लुबंटू 16.04 वर त्याच ऑपरेटिंग सिस्टममध्ये केले होते आणि त्यामुळे माझे जुने संगणक कोलंबियाच्या शुभेच्छा देऊन चांगले काम करीत होते.