Lærðu að reikna út DNI stafinn með Bash forskrift

 

Eftir að hafa fullnægt kröfur para geta keyrt bash forskriftir, og skilja hvernig á að skilgreina aðgerðir, læra hvernig skila gildi í bash aðgerðum. Fyrir þetta ætlum við að búa til lítið „en öflugt“ forrit í Bash það reiknaðu stafina í DNI. Ég hef góðar fréttir: Bash dós líka vera sett upp á Windows 10. Með því sem hægt er að bæta við öllum krafti Linux í stýrikerfum, segjum ... öðruvísi.

Fyrst af öllu verðum við að gera það skilja hvernig undirstrengir, sem, eins og á hvaða tungumáli sem er, hefur möguleika á skila hlutum af streng frá vísbendingu um keðjuna, stöðu og lengd hluta. Lítum á dæmi um þessa hegðun. Við búum til handritið okkar með

$ touch prueba_substring
$ 

Svo bætum við eftirfarandi kóða við valinn ritstjóra þinn. Í flugstöðinni valinn ritstjóri minn er mcedit. En undanfarið sé ég að nano er að eflast.

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

Að bæta við heimildum og framkvæma svona:

$ chmod +x prueba_substring
$ ./prueba_substring
$

Það ætti, ef allt gengur vel, að skila eftirfarandi niðurstöðu:

 Linux Con Ubuntu y Ubunlog, claro!

 Linux

 Aprendo en Ubunlog

Aðgerð undirstrengs

Eins og sjá má hér að ofan Ég hef dregið fram línur 13 til 15 handritsins og stíga til útskýrðu kóðann þinn. Echo með breytu „-e“ látum sýna næsta lína karakter, við höfum skilgreint þennan karakter í línu 7 og úthlutað breytunni «ret».

Lína 13: Ég sýni undirlagið (undirstrengur) af CHAIN ​​breytunni, lýst í línu 8, úr stöðu 12. Alltaf að byrja að telja frá stöðu 0.

Lína 14: Frá stöðu 12 í CHAIN ​​breytunni, ég sýni hlutann 5. Eins og þú munt sannreyna samsvarar þetta undirstrengur „Linux“.

Lína 15: Ég semja a nýr strengur fylgir tilvitnunum Ég byrja eins og „Ég læri í“, til að halda áfram með undirstreng af CHAIN ​​breytunni frá stöðu 31, með 7 hluta: þetta samsvarar „Ubunlog“.

Postback aðgerðir

Skilakerfið með Bash er framleitt með "return" skipuninni, þó að þegar við verðum að passa það við Bash breytu, þá útfærir það "skrýtið" kerfi, sem þú verður að venjast. Við skulum skoða eftirfarandi dæmi:

#!/usr/bin/env bash

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

suma 12 23
retorno=$?
echo $retorno

Aðgerðir verða alltaf að vera skilgreindar áður en þær eru notaðar í Bashþví eftir að shebang við lýsum yfir aðgerðasumman, á línu 4 við skilgreinum með „staðbundinni“ úthlutun fyrstu breytanna ($ 1) við breytuna „a“. Samskonar aðferð á línu 5, þar sem við skipum seinni breytuna a ($ 2) við breytuna «b». Í línu níu köllum við summufallið með tveimur breytum sem verða umbreyttar með því fyrirkomulagi sem lýst er í breytur "a" og "b" og með "skila" skilum við þeim bætt við, eins og sjá má auðveldlega í leiðbeiningunum um aðgerðina.

Við úthlutum breytunni „skila“ í lína 10 niðurstaðan af framkvæmd virknisummunnar.

Eftir að hafa lært og skilið hvernig skil á gildum og úthlutun til breytna er æfð Við skulum fara að sjá dagskrá okkar fyrir útreikningur á DNI bókstöfum með Bash.

Handrit til að reikna DNI stafi með 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 bréf DNI okkar Það samsvarar númerareining 23. Þetta er, við deilum tölunni í 23 y í stað þess að skoða stuðulinn, við fylgjumst með restinni af deildinni. Hin orðin, eins og tölur sem eru deilanlegar með 23 munu gefa núll, bréfið sem samsvarar því að það er «T», síðan þetta er staða 0, eins og við höfum séð í handritinu hér að ofan, allar undirstrikanir byrja að telja frá núlli. Það er, með einingunni munum við alltaf fá tölur milli 0 (stafur "T") og 22 (stafur "O"). Í Bash, eins og á öðrum tungumálum einingin er fengin með prósentuaðilanum «%».

Í línu 5 skilgreinum við stafina í pöntun þinni. Það er augljóst, ekki er hægt að breyta röðinni fyrir áreiðanlegar niðurstöður. Í ef línunnar 9 við erum að spyrja ef þegar hringt var í handritið var númer sem breytu. Ef engin breytu er til, óskum við eftir því með lyklaborðinu með leiðbeiningunum frá línum 11 til 13. Ef handritið var kallað með tölu til að reikna röðina á línu 15, úthlutar hún þessari breytu til breytunnar «ndni».

Í línu 23 er vísað til modulóaðgerðarinnar í gegnum breytuna breytu «ndni», annaðhvort hefur henni verið safnað sem breytu í bash eða með lyklaborði sem inntak. Í línu 24 er skilað aðgerðinni úthlutað til breytunnar «mod». Á 25 m línunnivið sýnum númerið, strikið og stafinn sem samsvarar stöðunni samkvæmt útreikningi einingarinnar og undirstringsins.

Að prófa DNI handritið okkar

 

$ ./dni 12345678
12345678-Z

O jæja,

$ ./dni

 Cálculo DNI, Introduce número

Öll forskriftir okkar ættu að innihalda „-a“ breytu fyrir höfundinn og aðra „-h“ fyrir hjálp og setningafræði. Eins og við höfum séð í fyrri greinum eða ég læt þér það eftir að gera kóðann ekki þunglamalegri.
Ég vona og vona að þessi grein hafi haft áhuga þinn.


Innihald greinarinnar fylgir meginreglum okkar um siðareglur ritstjórnar. Til að tilkynna um villu smelltu hér.

4 athugasemdir, láttu þitt eftir

Skildu eftir athugasemd þína

Netfangið þitt verður ekki birt.

*

*

  1. Ábyrgðarmaður gagna: Miguel Ángel Gatón
  2. Tilgangur gagnanna: Control SPAM, umsögn stjórnun.
  3. Lögmæti: Samþykki þitt
  4. Samskipti gagna: Gögnunum verður ekki miðlað til þriðja aðila nema með lagalegri skyldu.
  5. Gagnageymsla: Gagnagrunnur sem Occentus Networks (ESB) hýsir
  6. Réttindi: Hvenær sem er getur þú takmarkað, endurheimt og eytt upplýsingum þínum.

  1.   Ómar BM sagði

    Halló, getur einhver hjálpað mér? Ég þarf að setja lubuntu á gömlu borðtölvuna mína en það leyfir mér ekki að setja upp í gegnum USB og DVD drifið er skemmt, ég vil bara setja upp http://www.plop.at til Ubuntu 16.04 LTS en ég veit ekki hvernig á að gera það. Takk fyrir

    1.    Ímynd Pedro Ruiz Hidalgo sagði

      Omar,

      Eins og þú nefndir eru aðstæður ekki mjög vænlegar: USB er ekki leyfilegt og DVD drif er skemmt. En þú segir líka að „tölvan sé gömul“, það þýðir að þú ert með nýja. Reyndu að setja uppsetninguna á harða diskinum frá vinnandi tölvunni þinni og reyndu að setja hana upp frá því drifi.

      kveðjur

    2.    Cesar Deba sagði

      Ertu með tölvu og færanlegan kassa? Settu harða diskinn í gömlu tölvunni í USB-kassann sem hægt er að fjarlægja og byrjaðu uppsetningardiskinn.
      Linux og Unix taka ekki tillit til vélbúnaðarins á ræsistiginu, með því er hægt að setja diskinn aftur með Linux uppsettum.

    3.    Ómar BM sagði

      Þakka þér kærlega ég segi þér að það sem ég gerði var að fara frá Ubuntu 16.04 til Lubuntu 16.04 innan sama stýrikerfis hehe og svo virkaði gamla tölvan mín vel hehe kveðjur frá Kólumbíu.