Tudja meg, hogyan kell kiszámítani a DNI betűt Bash szkript használatával

Miután kielégítette a követelmények mert képes legyen bash szkriptek futtatására, és értsd meg hogyan definiáljuk a függvényeket, megtanulják, hogyan visszatérési értékek a bash függvényekben. Ehhez létrehozunk egy kis, de erőteljes programot Bash-ban számítsa ki a DNI betűit. Van egy jó hírem: Bash is telepíteni kell a Windows 10 rendszerre. Amivel hozzá lehet adni a Linux teljes erejét az operációs rendszerekben, mondjuk ... másként.

Először is muszáj megérteni, hogy a alszövegek, amire, mint minden nyelvben, lehetősége van egy karakterlánc részeit adja vissza a lánc megjelölésétől, a szegmens helyzetétől és hosszától. Nézzünk meg egy példát erre a viselkedésre. Azzal készítjük a szkriptünket

$ touch prueba_substring
$ 

Ezután hozzáadjuk a következő kódot a kívánt szerkesztőhöz. Terminál módban az előnyben részesített szerkesztőm az mcedit. De mostanában azt látom, hogy a nano egyre erősebb.

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

Az engedélyek hozzáadása és a végrehajtás így:

$ chmod +x prueba_substring
$ ./prueba_substring
$

Ha minden jól sikerült, a következő eredményt kell adnia:

 Linux Con Ubuntu y Ubunlog, claro!

 Linux

 Aprendo en Ubunlog

Substring művelet

Amint fentebb láthatja Kiemeltem a 13–15. Sort a forgatókönyvből, és lépésről lépésre magyarázza el a kódját. visszhang -vel a "-e" paraméter megmutatja a következő sor karakter, ezt a karaktert definiáltuk a 7. sor és a «ret» változóhoz rendelt.

13. sor: Megmutatom az alszöveget (szubsztring) a CHAIN ​​változó 8. sorban leírtaként, a 12. pozícióból. Mindig a 0. pozíciótól kezdi számolni.

14. sor: Innen a CHAIN ​​változó 12. pozíciójában 5-ös szegmenst mutatok. Amint ellenőrizni fogja, hogy ez megfelel-e a subing "Linux".

15. sor: Összeállítom a új karakterlánc idézőjelek közé zárva Úgy kezdem, hogy «beletanulok«, hogy folytassam a CHAIN ​​változó alszövegével a 31. pozícióból, egy 7-es szegmenst vesz fel: ez megfelel «Ubunlog».

Postback funkciók

A Bash-szel való visszatérési mechanizmust a "return" parancs állítja elő, bár amikor hozzá kell illesztenünk egy Bash-változóhoz, egy "furcsa" mechanizmust valósít meg, amelyet hozzá kell szokni. Nézzük meg a következő példát:

#!/usr/bin/env bash

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

suma 12 23
retorno=$?
echo $retorno

A funkciókat mindig meg kell határozni, mielőtt a Bash-ban használnánk őket, ezért a kunyhó deklaráljuk a függvény összegét, a 4. sorban a "local" segítségével meghatározzuk az első paraméterek hozzárendelését ($ 1) az "a" változóra. Azonos eljárás az 5. vonalon, ahol a második a ($ 2) paramétert a «b» változóhoz rendeljük. A kilencedik sorban az összegfüggvényt két paraméterrel hívjuk meg, amelyeket a "a" és "b" változók, és a "return" értékkel adjuk vissza őket, amint az a funkció utasításokban is jól látható.

A "return" változót a a 10. sor a függvényösszeg végrehajtásának eredménye.

Miután tanulmányozta és megértette a módját Az értékek visszatérését és a változókhoz való hozzárendelést gyakorolják Menjünk megnézni a DNI betűk számítása Bash-szal.

Szkript a DNI betűk Bash használatával történő kiszámításához

#!/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 levelünk megfelel a számmodul 23. Ez, elosztjuk a számot 23-mal y ahelyett, hogy a hányadost nézné, megfigyeljük a felosztás többi részét. A többi szó, mint a 23-mal osztható számok nullát adnak, az a levél megfelel a «T», mivel ez a 0. pozíció, amint azt a fenti forgatókönyvben láthattuk, az összes alsor nullától kezdi számolni. Vagyis a modullal mindig számokat fogunk kapni 0 ("T" betű) és 22 ("O" betű) között. Bash-ban, mint más nyelvekben a modult a «%» százalékos operátor segítségével kapjuk meg.

Az az 5. sor meghatározzuk a betűket sorrendjében. Ez nyilvánvaló, a sorrend nem változtatható meg megbízható eredményekért. A vonal if-jében 9 kérdezzük ha a szkript meghívásakor paraméterként egy szám volt. Ha nincs paraméter, akkor azt a billentyűzeten kérjük, a 11–13. Sor utasításainak megfelelően. Ha a szkriptet számmal hívták meg a 15. sor sorrendjének kiszámításához, rendelje hozzá ezt a paramétert az «ndni» változóhoz.

A 23. sorban a modulo függvényre utalunk a "ndni" változó, vagy a bash paramétereként gyűjtötték be, vagy a billentyűzet segítségével bemenetként gyűjtötték. A 24. sorban a függvény visszatérése a "mod" változóhoz van rendelve. A 25 m-es vonalonmegmutatjuk a pozíciónak megfelelő számot, kötőjelet és betűt a modulus és az alfej számítása alapján.

DNI szkriptünk tesztelése

$ ./dni 12345678
12345678-Z

Hát,

$ ./dni

 Cálculo DNI, Introduce número

Minden szkriptünknek tartalmaznia kell egy "-a" paramétert a szerző számára, és egy másik "-h" paramétert a segítség és a szintaxis érdekében. Amint azt a korábbi cikkekben láthattuk, vagy meghagyom neked, hogy elkerülje a kód nehézkesebbé tételét.
Remélem és remélem, hogy ez a cikk érdekelte Önt.


4 hozzászólás, hagyd a tiedet

Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: Miguel Ángel Gatón
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.

  1.   Omar B.M. dijo

    Helló, tud valaki segíteni nekem, telepítenem kell a lubuntu-t a régi asztalomra, de ez nem engedi, hogy USB-n keresztül telepítsem, és a dvd meghajtó sérült, csak telepíteni szeretnék http://www.plop.at az Ubuntu 16.04 LTS-re, de nem tudom, hogyan kell csinálni. Köszönöm

    1.    Pedro Ruiz Hidalgo helyőrző kép dijo

      Omar,

      Mint említetted, a helyzet nem túl ígéretes: az usb nem megengedett, és a dvd meghajtó sérült. De azt is megjegyzi, hogy a "számítógép régi", ez azt jelenti, hogy van úja. Tegye a telepítést a működő számítógép merevlemezére, és próbálja meg azt a meghajtóról telepíteni.

      Üdvözlet

    2.    Cesar Deba dijo

      Van számítógépe és cserélhető doboza? Csatlakoztassa a régi számítógép merevlemezét az eltávolítható USB dobozba, és indítsa el a telepítő lemezt.
      A Linux és a Unix nem veszi figyelembe a rendszerindítás szintjén található hardvert, amellyel a lemezt telepítve újra beteheti.

    3.    Omar B.M. dijo

      Köszönöm szépen, mondom, hogy az Ubuntu 16.04-től a Lubuntu 16.04-ig mentem ugyanazon az operációs rendszeren belül hehe, és így működött jól a régi számítógépem hehe üdvözlet Kolumbiából.