Naučite se izračunati črko DNI s pomočjo skripte Bash

Po izpolnitvi zahteve za biti sposoben zagnati bash skripte, in razumeti kako določiti funkcije, nauči se kako vrne vrednosti v bash funkcijah. Za to bomo v Bashu to ustvarili majhen "a močan" program izračunajte črke DNI. Imam dobre novice: tudi Bash lahko namestite v sistem Windows 10. S tem, kar lahko dodamo vso moč Linuxa v operacijskih sistemih, recimo ... drugače.

Najprej moramo razumeti, kako nizov, ki ima, kot v katerem koli jeziku, možnost vrni dele niza od navedbe verige, položaja in dolžine segmenta. Poglejmo primer tega vedenja. Naš skript ustvarjamo z

$ touch prueba_substring
$ 

Nato z želenim urejevalnikom dodamo naslednjo kodo. V terminalskem načinu moj najljubši urednik je mcedit. Toda v zadnjem času vidim, da nano dobiva moč.

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

Dodajanje dovoljenj in izvajanje tako:

$ chmod +x prueba_substring
$ ./prueba_substring
$

Če bi šlo vse dobro, bi morali vrniti naslednji rezultat:

 Linux Con Ubuntu y Ubunlog, claro!

 Linux

 Aprendo en Ubunlog

Operacija podniza

Kot lahko vidite zgoraj Izpostavil sem vrstice od 13 do 15 od skripta in koraka do razložite svojo kodo. Echo s parameter "-e" prikaže znak v naslednji vrstici, smo ta znak definirali v vrstica 7 in dodeljena spremenljivki «ret».

Vrstica 13: Prikažem podniz (podniz) spremenljivke CHAIN, opisane v vrstici 8, s položaja 12. Vedno začnemo šteti od položaja 0.

14. vrstica: Od na položaju 12 spremenljivke CHAIN ​​prikažem segment 5. Kot boste preverili, to ustreza podniz "Linux".

15. vrstica: Sestavim a nov niz, zaprt v narekovajih Začnem kot «Učim se v«, da nadaljujem s podnizom spremenljivke CHAIN s položaja 31, zavzevši segment 7: to ustreza «Ubunlog».

Funkcije povratne pošte

Mehanizem vračanja z Bashom ustvari ukaz "return", čeprav, ko ga moramo prilagoditi spremenljivki Bash, izvaja "čuden" mehanizem, na katerega se morate navaditi. Oglejmo si naslednji primer:

#!/usr/bin/env bash

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

suma 12 23
retorno=$?
echo $retorno

Funkcije je treba vedno določiti, preden jih uporabite v Bashutorej po shebang v vrstici 4 razglasimo vsoto funkcije s pomočjo »lokalno« določimo dodelitev prvega parametra ($ 1) na spremenljivko "a". Enak postopek v vrstici 5, kjer spremenljivki «b» dodelimo drugi parameter a ($ 2). V deveti vrstici pokličemo funkcijo vsote z dvema parametroma, ki jih bo pretvoril mehanizem, opisan v spremenljivki "a" in "b" in z "return" jih vrnemo dodane, kar je enostavno razvidno iz navodil za uporabo.

Spremenljivko "return" dodelimo v vrstica 10 rezultat izvajanja vsote funkcije.

Po študiju in razumevanju načina, na katerega izvajajo se vrnitve vrednosti in dodelitev spremenljivkam Oglejmo si naš program izračun črk DNI z Bashom.

Skripta za izračun črk DNI z Bashom

#!/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 pismo našega DNI ustreza številčni modul 23. To je, delimo število s 23 y namesto da bi gledali količnik, opazujemo preostalo delitev. Druge besede, kot števila, deljiva s 23, bodo nič, pismo, ki temu ustreza »T«, saj to je položaj 0, kot smo videli v zgornjem scenariju, vsi podnizi začnejo šteti od nič. Se pravi, z modulom bomo vedno dobili številke med 0 (črka "T") in 22 (črka "O"). V Bashu, tako kot v drugih jezikih modul je pridobljen s pomočjo odstotnega operatorja «%».

V vrstica 5 definiramo črke po vašem naročilu. Očitno je, vrstnega reda ni mogoče spremeniti za zanesljive rezultate. V vrstici if 9 vprašamo če je bila med klicem skripta kot parameter številka. Če parametra ni, ga zahtevamo na tipkovnici z navodili v vrsticah od 11 do 13. Če je bil skript poklican s številko za izračun vrstnega reda v vrstici 15, ta parameter dodelite spremenljivki «ndni».

V vrstici 23 se na funkcijo modulo sklicujemo s parametrom spremenljivka «ndni», bodisi je bila zbrana kot parameter v bash bodisi s tipkovnico kot vnos. V vrstici 24 je vrnitev funkcije dodeljena spremenljivki «mod». Na progi 25 mprikazujemo številko, pomišljaj in črko, ki ustreza položaju glede na izračun modula in podniza.

Testiranje našega DNI skripta

$ ./dni 12345678
12345678-Z

No dobro,

$ ./dni

 Cálculo DNI, Introduce número

Vsi naši skripti morajo vsebovati parameter "-a" za avtorja in še en "-h" za pomoč in sintakso. Kot smo videli v prejšnjih člankih, ali pa to prepuščam vam, da ne bi koda postala bolj okorna.
Upam in upam, da vas je ta članek zanimal.


Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Za podatke odgovoren: Miguel Ángel Gatón
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.

  1.   Omar B.M. je dejal

    Pozdravljeni, mi lahko kdo pomaga, na svoje namizje moram namestiti lubuntu, vendar mi ne bo omogočil namestitve prek USB-ja in DVD pogon je poškodovan, samo namestiti ga želim http://www.plop.at do Ubuntu 16.04 LTS, vendar ne vem, kako to storiti. Hvala

    1.    Slika nadomestnega znaka Pedro Ruiz Hidalgo je dejal

      Omar,

      Kot ste že omenili, položaj ni preveč obetaven: usb ni levi in ​​DVD pogon je poškodovan. Komentirate pa tudi, da je "računalnik star", to pomeni, da imate novega. Poskusite namestitev namestiti na trdi disk iz delovnega računalnika in ga poskusiti namestiti s tega pogona.

      pozdrav

    2.    Cesar Deba je dejal

      Imate računalnik in odstranljivo škatlo? Trdi disk starega računalnika namestite v odstranljivo USB omarico in zaženite namestitveni disk.
      Linux in Unix ne upoštevata strojne opreme na zagonu, s katero lahko znova namestite disk z nameščenim Linuxom.

    3.    Omar B.M. je dejal

      Najlepša hvala, povem vam, da sem naredil prehod iz Ubuntu 16.04 na Lubuntu 16.04 v istem operacijskem sistemu hehe in tako je moj stari računalnik dobro deloval, hehe pozdrav iz Kolumbije.