பாஷ் ஸ்கிரிப்டைப் பயன்படுத்தி டி.என்.ஐ கடிதத்தை எவ்வாறு கணக்கிடுவது என்பதை அறிக

திருப்தி அளித்த பிறகு தேவைகள் ஐந்து பாஷ் ஸ்கிரிப்ட்களை இயக்க முடியும், புரிந்து கொள்ளுங்கள் செயல்பாடுகளை எவ்வாறு வரையறுப்பது, எப்படி என்பதை அறிக பாஷ் செயல்பாடுகளில் திரும்ப மதிப்புகள். இதற்காக பாஷில் ஒரு சிறிய "ஆனால் சக்திவாய்ந்த" திட்டத்தை உருவாக்க உள்ளோம் DNI இன் எழுத்துக்களைக் கணக்கிடுங்கள். எனக்கு ஒரு நல்ல செய்தி உள்ளது: பாஷ் கூட முடியும் விண்டோஸ் 10 இல் நிறுவப்படும். இயக்க முறைமைகளில் லினக்ஸின் அனைத்து சக்தியையும் சேர்க்கக்கூடியவற்றைக் கொண்டு, வேறு ...

முதலில், நாம் வேண்டும் எப்படி என்பதை புரிந்து கொள்ளுங்கள் மூலக்கூறுகள், எந்த மொழியிலும், சாத்தியம் உள்ளது ஒரு சரத்தின் பகுதிகள் திரும்பவும் சங்கிலியின் அறிகுறி, நிலை மற்றும் பிரிவின் நீளம். இந்த நடத்தைக்கு ஒரு உதாரணத்தைப் பார்ப்போம். எங்கள் ஸ்கிரிப்டை உருவாக்குகிறோம்

$ touch prueba_substring
$ 

நீங்கள் விரும்பும் எடிட்டருடன் பின்வரும் குறியீட்டைச் சேர்ப்போம். முனைய பயன்முறையில் எனக்கு விருப்பமான ஆசிரியர் mcedit. ஆனால் சமீபத்தில் நானோ பலம் பெறுவதை நான் காண்கிறேன்.

 
#!/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 மற்றும் மாறி «ret» க்கு ஒதுக்கப்பட்டுள்ளது.

வரி 13: நான் அடி மூலக்கூறு காட்டுகிறேன் (மூலக்கூறு) CHAIN ​​மாறியின், 8 வது வரியில் விவரிக்கப்பட்டுள்ளது, நிலை 12 இலிருந்து. நிலை 0 இலிருந்து எப்போதும் எண்ணத் தொடங்குகிறது.

வரி 14: இருந்து CHAIN ​​மாறியின் நிலை 12, நான் 5 இன் ஒரு பகுதியைக் காட்டுகிறேன். நீங்கள் சரிபார்க்கும்போது இது ஒத்திருக்கிறது "லினக்ஸ்".

வரி 15: நான் எழுதுகிறேன் a புதிய சரம் மேற்கோள்களில் இணைக்கப்பட்டுள்ளது 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 வது வரியில் அறிவிக்கிறோம் அளவுருக்கள் முதல் ஒதுக்கீட்டை «உள்ளூர் of மூலம் வரையறுக்கிறோம் ($ 1) "a" மாறிக்கு. 5 வது வரியில் அடையாள நடைமுறை, எங்கே இரண்டாவது அளவுருவை a ($ 2) the b the மாறிக்கு ஒதுக்குகிறோம். ஒன்பது வரிசையில், தொகை செயல்பாட்டை இரண்டு அளவுருக்களுடன் அழைக்கிறோம், அவை விவரிக்கப்பட்ட பொறிமுறையால் மாற்றப்படும் "a" மற்றும் "b" மாறிகள் மற்றும் "திரும்ப" உடன் அவற்றைச் சேர்ப்போம், செயல்பாட்டு வழிமுறைகளில் எளிதாகக் காணலாம்.

நாம் "திரும்ப" என்ற மாறினை ஒதுக்குகிறோம் வரி 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 ஆல் வகுக்கப்படும் எண்கள் பூஜ்ஜியத்தைக் கொடுக்கும், அந்த கடிதம் அதனுடன் ஒத்துப்போகிறது «T», இது முதல் நிலை 0 ஆகும், மேலே உள்ள ஸ்கிரிப்டில் நாம் பார்த்தபடி, அனைத்து மூலக்கூறுகளும் பூஜ்ஜியத்திலிருந்து எண்ணத் தொடங்குகின்றன. அதாவது, தொகுதி மூலம் நாம் எப்போதும் எண்களைப் பெறுவோம் 0 (கடிதம் "டி") மற்றும் 22 (கடிதம் "ஓ") இடையே. பாஷில், பிற மொழிகளைப் போல தொகுதி% ஆபரேட்டர் «% of மூலம் பெறப்படுகிறது.

இல் வரி 5 நாம் எழுத்துக்களை வரையறுக்கிறோம் உங்கள் வரிசையில். இது நிதர்சனம் தானே, வரிசையை மாற்ற முடியாது நம்பகமான முடிவுகளுக்கு. வரியின் என்றால் 9 நாங்கள் கேட்கிறோம் ஸ்கிரிப்டை அழைக்கும் போது ஒரு அளவுருவாக ஒரு எண் இருந்தது. எந்த அளவுருவும் இல்லையென்றால், 11 முதல் 13 வரிகளில் உள்ள வழிமுறைகளுடன் விசைப்பலகையில் அதைக் கோருகிறோம். 15 வது வரிசையில் உள்ள வரிசையைக் கணக்கிட ஸ்கிரிப்ட் எண்ணுடன் அழைக்கப்பட்டால், இந்த அளவுருவை variable ndni the என்ற மாறிக்கு ஒதுக்கவும்.

23 வது வரிசையில், அளவுருவின் மூலம் மட்டு செயல்பாட்டைக் குறிப்பிடுகிறோம் மாறி «ndni», இது பாஷில் ஒரு அளவுருவாக அல்லது விசைப்பலகை உள்ளீடாக சேகரிக்கப்பட்டுள்ளது. 24 வது வரிசையில், செயல்பாட்டின் வருவாய் மாறி «mod to க்கு ஒதுக்கப்படுகிறது. 25 மீ வரிசையில்மாடுலஸ் மற்றும் அடி மூலக்கூறின் கணக்கீட்டின் படி நிலைக்கு ஒத்த எண், ஒரு கோடு மற்றும் கடிதத்தைக் காண்பிப்போம்.

எங்கள் டி.என்.ஐ ஸ்கிரிப்டை சோதிக்கிறது

$ ./dni 12345678
12345678-Z

ஓ, நன்றாக,

$ ./dni

 Cálculo DNI, Introduce número

எங்கள் எல்லா ஸ்கிரிப்ட்களிலும் ஆசிரியருக்கான "-a" அளவுருவும் உதவி மற்றும் தொடரியல் மற்றொரு "-h" யும் இருக்க வேண்டும். முந்தைய கட்டுரைகளில் நாங்கள் பார்த்தது போல அல்லது குறியீட்டை மிகவும் சிக்கலானதாக மாற்ற வேண்டாம் என்று நான் உங்களிடம் விட்டு விடுகிறேன்.
இந்த கட்டுரை உங்கள் ஆர்வமாக இருந்தது என்று நம்புகிறேன், நம்புகிறேன்.


உங்கள் கருத்தை தெரிவிக்கவும்

உங்கள் மின்னஞ்சல் முகவரி வெளியிடப்பட்ட முடியாது. தேவையான புலங்கள் குறிக்கப்பட்டிருக்கும் *

*

*

  1. தரவுக்கு பொறுப்பு: மிகுவல் ஏஞ்சல் கேடன்
  2. தரவின் நோக்கம்: கட்டுப்பாட்டு ஸ்பேம், கருத்து மேலாண்மை.
  3. சட்டபூர்வமாக்கல்: உங்கள் ஒப்புதல்
  4. தரவின் தொடர்பு: சட்டபூர்வமான கடமையால் தவிர மூன்றாம் தரப்பினருக்கு தரவு தெரிவிக்கப்படாது.
  5. தரவு சேமிப்பு: ஆக்சென்டஸ் நெட்வொர்க்குகள் (EU) வழங்கிய தரவுத்தளம்
  6. உரிமைகள்: எந்த நேரத்திலும் உங்கள் தகவல்களை நீங்கள் கட்டுப்படுத்தலாம், மீட்டெடுக்கலாம் மற்றும் நீக்கலாம்.

  1.   உமர் பி.எம் அவர் கூறினார்

    வணக்கம், யாராவது எனக்கு உதவ முடியுமா? நான் எனது பழைய டெஸ்க்டாப் கணினியில் லுபண்டு நிறுவ வேண்டும், ஆனால் அது யூ.எஸ்.பி வழியாக நிறுவ அனுமதிக்காது மற்றும் டிவிடி டிரைவ் சேதமடைந்துள்ளது, நான் நிறுவ விரும்புகிறேன் http://www.plop.at உபுண்டுக்கு 16.04 எல்டிஎஸ் ஆனால் அதை எப்படி செய்வது என்று எனக்குத் தெரியவில்லை. நன்றி

    1.    பருத்தித்துறை ரூயிஸ் ஹிடல்கோ ஒதுக்கிட படம் அவர் கூறினார்

      ஒமர்,

      நீங்கள் குறிப்பிட்டுள்ளபடி நிலைமை மிகவும் நம்பிக்கைக்குரியதல்ல: யூ.எஸ்.பி விடப்படவில்லை மற்றும் டிவிடி டிரைவ் சேதமடைந்துள்ளது. ஆனால் "கணினி பழையது" என்றும் நீங்கள் கருத்து தெரிவிக்கிறீர்கள், அதாவது உங்களிடம் புதியது உள்ளது. உங்கள் பணிபுரியும் கணினியிலிருந்து நிறுவலை ஒரு வன்வட்டில் வைத்து அந்த இயக்ககத்திலிருந்து நிறுவ முயற்சிக்கவும்.

      மேற்கோளிடு

    2.    சீசர் டெல்பா அவர் கூறினார்

      உங்களிடம் கணினி மற்றும் நீக்கக்கூடிய பெட்டி இருக்கிறதா? நீக்கக்கூடிய யூ.எஸ்.பி பெட்டியில் பழைய கணினியின் வன்வட்டத்தை ஏற்றி நிறுவல் வட்டைத் தொடங்கவும்.
      துவக்க மட்டத்தில் வன்பொருளை லினக்ஸ் மற்றும் யூனிக்ஸ் கணக்கில் எடுத்துக்கொள்ளாது, இதன் மூலம் நீங்கள் நிறுவப்பட்ட லினக்ஸ் மூலம் வட்டை மீண்டும் வைக்கலாம்.

    3.    உமர் பி.எம் அவர் கூறினார்

      மிக்க நன்றி நான் உபுண்டு 16.04 இலிருந்து லுபுண்டு 16.04 க்கு அதே இயக்க முறைமைக்குள் செல்ல வேண்டும், அதனால் எனது பழைய கணினி கொலம்பியாவிலிருந்து வாழ்த்துக்களை நன்றாக வேலை செய்து கொண்டிருந்தது.