Siit saate teada, kuidas arvutada DNI täht Bashi skripti abil

Pärast rahuldamist nõuded para olema võimeline käivitama bashi skripteja mõista kuidas funktsioone määratleda, õpi kuidas tagastusväärtused bashi funktsioonides. Selle jaoks loome Bashis väikese, kuid võimsa programmi arvutage DNI tähed. Mul on häid uudiseid: ka Bash saab installida Windows 10-le. Mis saab lisada kogu Linuxi jõu operatsioonisüsteemides, ütleme nii, et ... erinevad.

Esiteks peame seda tegema mõista, kuidas alamstringid, millel, nagu igas keeles, on võimalus tagastage stringi osad keti näitamisest, segmendi asendist ja pikkusest. Vaatame selle käitumise näidet. Loome oma skripti

$ touch prueba_substring
$ 

Seejärel lisame teie eelistatud redaktoriga järgmise koodi. Terminalirežiimis minu eelistatud toimetaja on mcedit. Kuid viimasel ajal näen, et nano kogub jõudu.

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

Õiguste lisamine ja käivitamine järgmiselt:

$ chmod +x prueba_substring
$ ./prueba_substring
$

Kui kõik sujus, peaks see tagastama järgmise tulemuse:

 Linux Con Ubuntu y Ubunlog, claro!

 Linux

 Aprendo en Ubunlog

Alamstringi operatsioon

Nagu eespool näha Olen esile tõstnud read 13–15 skripti ja samm selgitage oma koodi. Kaja koos parameeter "-e" laseb näidata järgmise rea märk, oleme selle märgi määratlenud rida 7 ja on määratud muutujale "ret".

Rida 13: ma näitan alamstringi (alamstring) rida 8 kirjeldatud muutuja CHAIN asendist 12. Alustatakse lugemist alati positsioonilt 0.

14. rida: Alates muutuja CHAIN ​​asendis 12 näitan segmenti 5. Nagu te veendute, vastab see järgmisele alamstring "Linux".

15. rida: koostan a uus string jutumärkides Alustan sõnaga «ma õpin sisse», et jätkata muutuja CHAIN ​​alamstringiga positsioonilt 31, võttes osa 7: see vastab «Ubunlog».

Postback funktsioonid

Bashiga tagastamise mehhanismi toodab käsk "return", kuigi kui peame selle sobitama Bashi muutujaga, rakendab see "kummalist" mehhanismi, millega peate harjuma. Vaatame järgmist näidet:

#!/usr/bin/env bash

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

suma 12 23
retorno=$?
echo $retorno

Funktsioonid tuleb alati enne Bashis kasutamist määratleda, järelikult pärast seebang deklareerime funktsiooni summa real 4 määratleme «kohaliku» abil esimese parameetri määramise ($ 1) muutujale "a". Identne protseduur real 5, kus määrame muutujale «b» teise parameetri a ($ 2). Üheksal real nimetame summafunktsiooni kahe parameetriga, mis teisendatakse jaotises kirjeldatud mehhanismiga muutujad "a" ja "b" ning "return" abil tagastame need lisatud, nagu on hõlpsasti näha funktsioonijuhistest.

Määrame muutuja "return" rida 10 funktsiooni summa täitmise tulemus.

Pärast õppimist ja selle mõistmist Harjutatakse väärtuste tagastamist ja muutujate omistamist Vaatame oma programmi DNI tähtede arvutamine Bashiga.

Skript DNI-tähtede arvutamiseks Bashiga

#!/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 meie DNI kiri vastab numbrimoodul 23. See on, jagame numbri 23-ga y jagamise vaatamise asemel jälgime ülejäänud jaotust. Teised sõnad, nagu 23-ga jagatavad arvud annavad nulli, kiri, et vastab sellele on «T», kuna see on positsioon 0, nagu nägime ülaltoodud skriptist, kõik alamstringid hakkavad lugema nullist. See tähendab, et mooduliga saame alati numbrid vahemikus 0 (täht "T") kuni 22 (täht "O"). Bashi keeles, nagu teisteski keeltes moodul saadakse protsendioperaatori «%» abil.

Aastal rida 5 määratleme tähed teie järjekorras. See on ilmselge, järjekorda ei saa muuta usaldusväärsete tulemuste saamiseks. Kui rida on 9 me küsime kui skripti kutsumisel oli parameetrina number. Kui parameetrit pole, küsime seda klaviatuuril koos juhistega ridadel 11 kuni 13. Kui skripti kutsuti numbriga, et arvutada rea ​​15 järjekord, määrake see parameeter muutujale «ndni».

Real 23 osutame modulo funktsioonile parameetri kaudu muutuja «ndni», kas see on kogutud parameetrina bashis või klaviatuuri abil sisendina. Real 24 määratakse funktsiooni tagastamine muutujale "mod". 25 m joonelnäitame positsioonile vastavat arvu, kriipsu ja tähte vastavalt mooduli ja alamstringi arvutamisele.

Meie DNI skripti testimine

$ ./dni 12345678
12345678-Z

O noh,

$ ./dni

 Cálculo DNI, Introduce número

Kõik meie skriptid peaksid sisaldama parameetrit "-a" autori jaoks ja veel ühte "-h" abi ja süntaksit. Nagu eelmistes artiklites nägime, või jätan selle teile, et vältida koodi tülikamat muutmist.
Loodan ja loodan, et see artikkel on teile huvi pakkunud.


Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata. Kohustuslikud väljad on tähistatud *

*

*

  1. Andmete eest vastutab: Miguel Ángel Gatón
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.

  1.   Omar B.M. DIJO

    Tere, kas keegi saaks mind aidata, pean installima lubuntu oma vanale töölauale, kuid see ei lase mul USB kaudu installida ja DVD-draiv on kahjustatud, tahan lihtsalt installida http://www.plop.at Ubuntu 16.04 LTS-i, kuid ma ei tea, kuidas seda teha. Aitäh

    1.    Pedro Ruiz Hidalgo kohatäide DIJO

      Omar,

      Nagu mainisite, pole olukord kuigi paljutõotav: usb pole lubatud ja DVD-draiv on kahjustatud. Kuid kommenteerite ka seda, et "arvuti on vana", see tähendab, et teil on uus. Proovige installida töötavast arvutist kõvakettale ja proovige installida see sellelt kettalt.

      seoses

    2.    Cesar Deba DIJO

      Kas teil on arvuti ja eemaldatav karp? Paigaldage vana arvuti kõvaketas eemaldatavasse USB-kasti ja käivitage installiketas.
      Linux ja Unix ei võta alglaadimisel arvesse riistvara, millega saate ketta uuesti installida koos installitud linuxiga.

    3.    Omar B.M. DIJO

      Suur aitäh, ütlen teile, et läksin sama operatsioonisüsteemi kaudu Ubuntu 16.04-st Lubuntu 16.04-ni ja nii töötas mu vana arvuti hästi hehe tervitused Colombiast.