Opi laskemaan DNI-kirjain Bash-komentosarjan avulla

Tyydyttämisen jälkeen requisitos ja pystyä suorittamaan bash-komentosarjojaja ymmärrä kuinka määritellä toiminnot, Opi kuinka paluuarvot bash-funktioissa. Tätä varten aiomme luoda pienen "mutta tehokkaan" ohjelman Bashiin Laske DNI: n kirjaimet. Minulla on hyviä uutisia: Bash voi myös olla asennettuna Windows 10: een. Sillä, mitä voidaan lisätä, kaikki Linuxin voimat käyttöjärjestelmissä, sanotaan ... erilaiset.

Ensinnäkin meidän on ymmärtää miten merkkijonoa, jolla, kuten kaikilla kielillä, on mahdollisuus palauta merkkijonon osat ketjun osoittamisesta, segmentin sijainnista ja pituudesta. Katsotaanpa esimerkkiä tästä käyttäytymisestä. Luomme käsikirjoituksemme

$ touch prueba_substring
$ 

Sitten lisätään seuraava koodi haluamaasi editoriin. Päätetilassa ensisijainen toimittajani on mcedit. Mutta viime aikoina näen, että nano on voimistumassa.

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

Käyttöoikeuksien lisääminen ja suorittaminen näin:

$ chmod +x prueba_substring
$ ./prueba_substring
$

Jos kaikki meni hyvin, sen pitäisi palauttaa seuraava tulos:

 Linux Con Ubuntu y Ubunlog, claro!

 Linux

 Aprendo en Ubunlog

Substring-käyttö

Kuten yllä voit nähdä Olen korostanut rivejä 13-15 käsikirjoituksesta ja siirry kohtaan selitä koodisi. Echo kanssa parametri "-e" antaa näyttää seuraavan rivin merkki, olemme määrittäneet tämän merkin rivi 7 ja osoitettu muuttujalle «ret».

Rivi 13: Näytän alimerkkijonon (alimerkkijono) rivillä 8 kuvatun CHAIN-muuttujan kohdasta 12. Aina alkaa laskea paikasta 0.

Rivi 14: Lähtö CHAIN-muuttujan asemassa 12 näytän segmentin 5. Kun varmistat, että tämä vastaa substing "Linux".

Rivi 15: Sävelen a uusi merkkijono lainausmerkeissä Aloitan nimellä "Opi sisään" jatkaakseni CHAIN-muuttujan alaryhmällä sijainnista 31 ottaen segmentin 7: tämä vastaa «Ubunlog».

Postback-toiminnot

Palautusmekanismin Bashin kanssa tuottaa "return" -komento, vaikka, kun meidän on sovitettava se Bash-muuttujaan, se käyttää "outoa" mekanismia, johon sinun on totuttava. Katsotaanpa seuraavaa esimerkkiä:

#!/usr/bin/env bash

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

suma 12 23
retorno=$?
echo $retorno

Toiminnot on aina määriteltävä ennen niiden käyttöä Bashissasen vuoksi jittu ilmoitamme funktion summan rivillä 4 määrittelemme «paikallisen» avulla ensimmäisen parametrin osoittamisen ($ 1) muuttujaan "a". Identtinen menettely rivillä 5, missä annamme toisen parametrin a ($ 2) muuttujalle «b». Rivillä yhdeksän kutsumme summafunktiota kahdella parametrilla, jotka muunnetaan kohdassa kuvatulla mekanismilla muuttujat "a" ja "b" ja "return" palautamme ne lisätään, kuten toiminto-ohjeista helposti näkyy.

Määritämme muuttujan "return" rivi 10 tulos funktion summan suorittamisesta.

Kun olet opiskellut ja ymmärtänyt, miten harjoitetaan arvojen palautusta ja osoittamista muuttujiin Mennään katsomaan ohjelmaa DNI-kirjainten laskeminen Bashin avulla.

Komentosarja DNI-kirjainten laskemiseksi Bashin avulla

#!/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 DNI: n kirje vastaa numeromoduuli 23. Tämä on, jaamme luvun 23: lla y sen sijaan että katsot osamäärää, tarkkailemme loput jaosta. Toiset sanat, kuten 23: lla jaettavat luvut antavat nollan, kirje vastaa sitä on «T», tästä lähtien on asento 0, kuten olemme nähneet yllä olevasta käsikirjoituksesta, kaikki alaotsakkeet alkavat laskea nollasta. Eli moduulin avulla saamme aina numeroita välillä 0 (kirjain "T") - 22 (kirjain "O"). Bashissa, kuten muillakin kielillä moduuli saadaan prosenttioperaattorilla «%».

Että rivi 5 määritämme kirjaimet tilauksessasi. Se on itsestään selvää, järjestystä ei voi muuttaa luotettavien tulosten saamiseksi. Jos rivillä 9 me kysymme jos komentosarjaa soitettaessa parametrina oli numero. Jos parametria ei ole, pyydämme sitä näppäimistöltä ohjeiden avulla riveille 11-13. Jos komentosarjaa kutsuttiin numerolla rivin 15 järjestyksen laskemiseksi, määritä tämä parametri muuttujalle «ndni».

Rivillä 23 viitataan modulo-funktioon parametrin muuttuja «ndni», joko se on kerätty parametrina bashissa tai näppäimistöllä syötteenä. Rivillä 24 funktion palautus osoitetaan muuttujalle «mod». 25 m linjallanäytämme sijaintia vastaavan luvun, viivan ja kirjaimen moduulin ja osajohdon laskennan mukaan.

Testataan DNI-komentosarjaa

$ ./dni 12345678
12345678-Z

No,

$ ./dni

 Cálculo DNI, Introduce número

Kaikkiin skripteihimme tulisi sisältyä "-a" -parametri kirjoittajalle ja toinen "-h" apua ja syntaksia varten. Kuten olemme nähneet edellisissä artikkeleissa, tai jätän sen teille, jotta vältät koodin hankkimisen.
Toivon ja toivon, että tämä artikkeli on kiinnostanut sinua.


Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

*

  1. Vastuussa tiedoista: Miguel Ángel Gatón
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.

  1.   Omar B.M. dijo

    Hei, voiko joku auttaa minua, minun on asennettava lubuntu vanhaan pöytätietokoneeseeni, mutta se ei anna minun asentaa USB: n kautta ja DVD-asema on vaurioitunut, haluan vain asentaa http://www.plop.at Ubuntu 16.04 LTS: ään, mutta en tiedä miten se tehdään. Kiitos

    1.    Pedro Ruiz Hidalgo paikkamerkki dijo

      Omar

      Kuten mainitsit, tilanne ei ole kovin lupaava: USB-muistia ei ole jäljellä ja DVD-asema vaurioitunut. Mutta kommentoit myös, että "tietokone on vanha", mikä tarkoittaa, että sinulla on uusi. Yritä laittaa asennus kiintolevylle tietokoneeltasi ja yrittää asentaa se tältä asemalta.

      terveiset

    2.    Cesar Deba dijo

      Onko sinulla tietokone ja irrotettava laatikko? Asenna vanhan tietokoneen kiintolevy irrotettavaan USB-ruutuun ja käynnistä asennuslevy.
      Linux ja Unix eivät ota huomioon laitteistoa käynnistystasolla, jolla voit laittaa levyn uudelleen asennetun linuxin kanssa.

    3.    Omar B.M. dijo

      Paljon kiitoksia, kerron teille, että mitä tein, oli siirtyä Ubuntu 16.04: stä Lubuntu 16.04: een samalla käyttöjärjestelmällä hehe ja näin vanha tietokoneeni toimi hyvin hehe tervehdyksiä Kolumbiasta.