Baro xisaabinta xarafka DNI adoo adeegsanaya qoraal Bash ah

Kadib markaan ku qancay shuruudaha waayo, awood u yeesho inaad maamusho qoraallada bash, oo fahan sida loo qeexo shaqooyinka, baro sida ku soo celi qiyamka howlaha bash. Tan waxaan u abuureynaa barnaamij yar 'laakiin awood badan' ee Bash taas xisaabi xarfaha DNI. Waxaan hayaa war wanaagsan: Bash sidoo kale lagu rakibo Windows 10. Iyada oo waxa lagu dari karo dhammaan awoodda Linux ee nidaamyada hawlgalka, aynu nidhaahno ... kala duwan.

Marka hore, waa inaan fahmaan sida guntin, taas oo, sida luqad kasta, u leh suurtogalnimada soo celi qaybo silig ah laga bilaabo tilmaanta silsiladda, booska iyo dhererka qaybta. Aan eegno tusaale dhaqankan ah. Waxaan ku abuureynaa qoraalkeena

$ touch prueba_substring
$ 

Kadibna waxaan ku darnaa lambarka soo socda tifaftiraha aad doorbideyso. Xaaladda terminal tifaftiraha aan doorbido waa la mcedit. Laakiin waayadan dambe waxaan arkaa in nano ay sii xoogeysaneyso.

 
#!/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 

Ku darista rukhsadaha oo u fuliya sidan:

$ chmod +x prueba_substring
$ ./prueba_substring
$

Waa inay noqotaa, haddii wax waliba si hagaagsan u socdeen, soo celi natiijada soo socota:

 Linux Con Ubuntu y Ubunlog, claro!

 Linux

 Aprendo en Ubunlog

Substring Operation

Sida aad kor ka arki karto Waxaan iftiimiyay khadadka 13 ilaa 15 laga bilaabo qoraalka iyo tallaabada loo qaado sharax koodhkaaga. Echo la socota halbeegga "-e" aan tusno astaamaha xariiqda xigta, waxaan ku qeexnay astaantan sadarka 7 oo loo qoondeeyay doorsoomaha 'ret'.

Khad 13: Waxaan tusayaa xariga (guntin) ee doorsoomaha SILSIGA, oo lagu sharaxay sadarka 8, laga bilaabo booska 12. Had iyo jeer laga bilaabo tirinta booska 0.

Sadarka 14aad: Laga soo bilaabo booska 12 ee doorsoomaha SILSILADA, waxaan muujinayaa qayb ka mid ah 5. Sida aad xaqiijin doonto tani waxay u dhigantaa xariiq "Linux".

Sadarka 15aad: Waxaan curiyaa a xarig cusub oo lagu lifaaqay xigashooyin Waxaan ku bilaabayaa sidii «Waxaan wax ku bartay«, si aan ugu sii wado xarigga isweydaarsiga SILSILADA laga bilaabo booska 31, qaadashada qayb ka mid ah 7: tani waxay u dhigantaa «Ubunlog».

Hawlaha dib u celinta

Nidaamka soo noqoshada ee Bash waxaa soo saaray "amarka" amarka, in kasta oo, marka ay tahay inaan u dhigno isbeddel Bash ah, wuxuu hirgeliyaa qaab "qalaad" ah, oo ay tahay inaad la qabsato. Aynu eegno tusaalaha soo socda:

#!/usr/bin/env bash

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

suma 12 23
retorno=$?
echo $retorno

Hawlaha waa in had iyo jeer la qeexaa ka hor inta aan lagu isticmaalin Bash, sidaas darteed, ka dib shebang waxaan ku dhawaaqeynaa wadarta shaqada, khadka 4 waxaan ku qeexeynaa iyadoo loo adeegsanayo «maxalliga» u xilsaaridda qeybta koowaad ee cabbirada ($ 1) ilaa doorsoomaha "a". Nidaam isku mid ah khadka 5, halka waxaan u xilsaaraynaa halbeegga labaad a ($ 2) doorsoomaha «b». Sadarka sagaalaad waxaan ugu yeeraynaa wadarta wadarta labo beeg oo loo rogi doono habka lagu sharaxay doorsoomayaasha "a" iyo "b" iyo "laabashada" waxaan ku celinaynaa iyaga oo lagu daray, sida si fudud loogu arki karo tilmaamaha shaqada.

Waxaan ku meeleyneynaa doorsoomaha "soo celinta" ee kujira sadarka 10 natiijada fulinta wadarta shaqada.

Kadib markaan darsay oo aan fahmay qaabka ay tahay soo celinta qiimaha iyo meeleynta doorsoomayaasha ayaa lagu dhaqmaa Aan tagno si aan u aragno barnaamijkeenna xisaabinta xarfaha DNI ee leh Bash.

Qor si loo xisaabiyo xarfaha DNI ee leh Bash

#!/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 warqadda DNI-ga Waxay u dhigantaa nambarka lambarka 23. Kani waa, waxaan uqeybineynaa tirada 23 y halkii aad ka eegi lahayd qaybta, waxaan u fiirsaneynaa qeybaha intiisa kale. Erayada kale, sida tirooyinka loo qaybin karo 23 ayaa eber siin doona, warqadda in waxay u dhigantaa waa «T», tan tan waa booska 0, sidaan ku aragnay qoraalka kore, dhammaan noocyada kala duwan waxay bilaabaan tirinta eber. Taasi waa, iyada oo moduleka aan marwalba heli doonno lambarro inta udhaxeysa 0 (xarafka "T") iyo 22 (xarafka "O"). In Bash, sida luqadaha kale moduleka waxaa lagu helaa iyada oo loo adeegsanayo boqolkiiba boqolkiiba%%.

In sadarka 5 waxaan qeexnaa xarfaha amarkaaga Waa iska cadahay, amarka lama beddeli karo natiijooyin lagu kalsoonaan karo. Hadday tahay khadka 9 waxaan weydiineynaa haddii markii la wacayo qoraalka ay jireen tiro ahaan halbeegga. Haddii aysan jirin wax cabir ah, waxaan ka codsaneynaa kumbuyuutarka oo leh tilmaamaha ku yaal xariiqyada 11 illaa 13. Haddii qoraalka loogu yeero lambar si loo xisaabiyo amarka khadka 15, ku wareeji halbeeggan 'ndni'.

Sadarka 23 waxaan ula jeednaa shaqada modulo iyada oo loo marayo cabirka doorsoomaha «ndni», ama waxaa loo soo uruuriyay iyada oo halbeeggeedu yahay bash, ama kiiboodh ahaan ahaan sidii loogu daro. Sadarka 24 soo celinta shaqada waxaa loo xilsaaray doorsoomaha «mod». On khadka 25 mwaxaan ku tusineynaa lambarka, dash iyo xarafka u dhigma booska sida ku cad xisaabinta qalabka iyo xariga hoose.

Tijaabinta qoraalkeena DNI

$ ./dni 12345678
12345678-Z

Si fiican,

$ ./dni

 Cálculo DNI, Introduce número

Dhamaan qoraaladeena waa inay kujiraan cabir "-a" qoraaga iyo "-h" kale oo caawimaad iyo qaabeyn ah. Sidii aan ku aragnay qormooyinki hore ama anaa idinkaga tagay idinkoo iska ilaalinaya in koodhku noqdo mid culeys badan.
Waxaan rajaynayaa oo aan rajaynayaa in maqaalkani uu ahaa mid aad xiisayseen.


Ka tag faalladaada

cinwaanka email aan la daabacin doonaa. Beeraha loo baahan yahay waxaa lagu calaamadeeyay la *

*

*

  1. Masuul ka ah xogta: Miguel Ángel Gatón
  2. Ujeedada xogta: Xakamaynta SPAM, maaraynta faallooyinka.
  3. Sharci: Oggolaanshahaaga
  4. Isgaarsiinta xogta: Xogta looma gudbin doono dhinacyada saddexaad marka laga reebo waajibaadka sharciga ah.
  5. Kaydinta xogta: Macluumaadka ay martigelisay Shabakadaha Occentus (EU)
  6. Xuquuqda: Waqti kasta oo aad xadidi karto, soo ceshan karto oo tirtiri karto macluumaadkaaga.

  1.   Cumar BM dijo

    Waad salaaman tahay, qof ma i caawin karaa, waxaan u baahanahay inaan ku rakibo lubuntu dusha desktop-kayga hore laakiin ii oggolaan maayo inaan ku rakibo USB-ga oo dvd-ga waxyeello gaadho, waxaan rabaa inaan rakibo http://www.plop.at ilaa Ubuntu 16.04 LTS laakiin anigu garan maayo sida loo sameeyo. Mahadsanid

    1.    Pedro Ruiz Hidalgo sawir-qaade boos dijo

      Cumar,

      Sidaad xustay, xaaladdu rajo badan ma leh: USB-ga lama ogola oo dvd-ga waxyeello ayaa soo gaadhay. Laakiin adiguba waxaad faallo ka bixinaysaa in "kumbuyuutarradii duug ahayd", taas macnaheedu waa inaad mid cusub leedahay. Isku day inaad rakibida rakibida ku shubto darawal adag kombiyuutarkaaga shaqada isla markaana aad isku daydo inaad ku rakibto darawalkaas

      Salaan

    2.    Cesar Deba dijo

      Ma haysataa kumbuyuutar iyo sanduuq la saari karo? Ku dhaji drive-ka adag ee kombiyuutarka hore sanduuqa USB-ga ee la saari karo oo bilow saxanka rakibidda.
      Linux iyo Unix ma tixgelinayaan qalabka ku jira heerka bootka, kaas oo aad mar kale ku ridi karto diskiga adoo adeegsanaya Linux-ka lagu rakibay.

    3.    Cumar BM dijo

      Aad baad u mahadsan tahay waxaan kuu sheegayaa in wixii aan sameeyay ay ahayd inaan ka tago Ubuntu 16.04 una sii gudbo Lubuntu 16.04 isla nidaamkaas hawlgalka hehe waana sida kombuyuutarkeygii hore u shaqeynayay si fiican hehe salaan ka timid Kolombiya.