Naučte se, jak vypočítat písmeno DNI pomocí skriptu Bash

Po uspokojení Požadavky bod umět spouštět bash skriptya pochopit jak definovat funkce, naučit se jak návratové hodnoty v bash funkcích. Za tímto účelem vytvoříme v Bashi malý ―ale výkonný― program vypočítat písmena DNI. Mám dobrou zprávu: Bash může také být nainstalován na Windows 10. S tím, co lze přidat veškerou sílu Linuxu v operačních systémech, řekněme ... jinou.

Nejprve musíme pochopit, jak substráty, který, stejně jako v jakémkoli jazyce, má možnost vrátit části řetězce z označení řetězu, polohy a délky segmentu. Podívejme se na příklad tohoto chování. Náš scénář vytváříme pomocí

$ touch prueba_substring
$ 

Potom přidáme následující kód do vašeho preferovaného editoru. V terminálním režimu můj preferovaný editor je mcedit. Ale v poslední době vidím, že nano získává na síle.

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

Přidání oprávnění a provádění takto:

$ chmod +x prueba_substring
$ ./prueba_substring
$

Pokud by vše proběhlo v pořádku, mělo by vrátit následující výsledek:

 Linux Con Ubuntu y Ubunlog, claro!

 Linux

 Aprendo en Ubunlog

Podřetězcová operace

Jak vidíte výše Zvýraznil jsem řádky 13 až 15 ze skriptu a krok do vysvětlete svůj kód. Echo s parametr "-e" pojďme ukázat znak dalšího řádku, tento znak jsme definovali v řádek 7 a přiřazen k proměnné «ret».

Řádek 13: Zobrazuji podřetězec (podřetězec) proměnné CHAIN ​​popsané v řádku 8, z pozice 12. Vždy začíná počítat od pozice 0.

Řádek 14: Od pozice 12 proměnné CHAIN, zobrazuji segment 5. Jak ověříte, odpovídá to podřetězec "Linux".

Řádek 15: Složím a nový řetězec uzavřený v uvozovkách Začínám jako «Učím se«, abych pokračoval v podřetězci proměnné CHAIN z pozice 31, přičemž segment 7: to odpovídá «Ubunlog».

Funkce postback

Zpětný mechanismus s Bashem je vytvořen příkazem „return“, ačkoli, když jej musíme přiřadit k proměnné Bash, implementuje „podivný“ mechanismus, na který si musíte zvyknout. Podívejme se na následující příklad:

#!/usr/bin/env bash

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

suma 12 23
retorno=$?
echo $retorno

Funkce musí být vždy definovány před použitím v Bash, tedy po Shebang deklarujeme funkční součet na řádku 4 definujeme pomocí «lokálního» přiřazení prvního z parametrů ($ 1) k proměnné „a“. Stejný postup na řádku 5, kde druhý parametr a ($ 2) přiřadíme proměnné «b». V řádku devět voláme funkci součtu se dvěma parametry, které budou převedeny mechanismem popsaným v proměnné „a“ a „b“ a pomocí „návratu“ je vrátíme přidané, jak lze snadno vidět v pokynech k funkci.

Proměnné "návrat" přiřadíme v řádek 10 výsledek provedení součtu funkcí.

Po prostudování a pochopení způsobu, jakým Procvičují se návraty hodnot a přiřazení k proměnným Pojďme se podívat na náš program výpočet písmen DNI s Bash.

Skript pro výpočet písmen DNI s 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 dopis našeho DNI odpovídá číselný modul 23. Tohle je, číslo vydělíme 23 y místo pohledu na kvocient pozorujeme zbytek divize. Jinými slovy, jako čísla dělitelná 23 budou mít nulu, dopis, který odpovídá tomu je «T», protože toto je pozice 0, jak jsme viděli ve skriptu výše, všechny podřetězce začínají počítat od nuly. To znamená, že s modulem vždy získáme čísla mezi 0 (písmeno "T") a 22 (písmeno "O"). V Bash, stejně jako v jiných jazycích modul je získán pomocí operátoru procenta «%».

V řádek 5 definujeme písmena ve vaší objednávce. Je to zřejmé, pořadí nelze změnit pro spolehlivé výsledky. V případě řádku 9 ptáme se pokud při volání skriptu bylo jako parametr číslo. Pokud není žádný parametr, požadujeme ho klávesnicí s pokyny z řádků 11 až 13. Pokud byl skript zavolán s číslem pro výpočet pořadí na řádku 15, přiřadí tento parametr proměnné «ndni».

V řádku 23 odkazujeme na funkci modulo prostřednictvím parametru proměnná «ndni», buď byla shromážděna jako parametr v bash, nebo pomocí klávesnice jako vstup. V řádku 24 je návrat funkce přiřazen proměnné «mod». Na 25 m čářezobrazíme číslo, pomlčku a písmeno odpovídající poloze podle výpočtu modulu a podřetězce.

Testování našeho skriptu DNI

$ ./dni 12345678
12345678-Z

Dobře,

$ ./dni

 Cálculo DNI, Introduce número

Všechny naše skripty by měly obsahovat parametr „-a“ pro autora a další „-h“ pro nápovědu a syntaxi. Jak jsme viděli v předchozích článcích, nebo to nechám na vás, aby nebyl kód těžkopádnější.
Doufám a doufám, že vás tento článek zajímal.


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.

  1.   Omar B.M. řekl

    Dobrý den, může mi někdo pomoci, potřebuji nainstalovat lubuntu na můj starý desktop, ale nedovolí mi to instalovat přes USB a jednotka DVD je poškozená, chci jen nainstalovat http://www.plop.at na Ubuntu 16.04 LTS, ale nevím, jak na to. dík

    1.    Zástupný obrázek pro Pedro Ruiz Hidalgo řekl

      Omar,

      Jak jste zmínili, situace není příliš slibná: USB není povoleno a jednotka DVD je poškozena. Ale také komentujete, že „počítač je starý“, to znamená, že máte nový. Zkuste nainstalovat instalaci na pevný disk z pracovního počítače a zkuste ji nainstalovat z této jednotky.

      pozdravy

    2.    Cesar Deba řekl

      Máte počítač a odnímatelnou krabici? Připojte pevný disk starého počítače do vyjímatelného usb boxu a spusťte instalační disk.
      Linux a Unix nezohledňují hardware na bootovací úrovni, pomocí kterého můžete disk znovu umístit s nainstalovaným linuxem.

    3.    Omar B.M. řekl

      Velice vám děkuji, říkám vám, že to, co jsem udělal, bylo přejít z Ubuntu 16.04 na Lubuntu 16.04 ve stejném operačním systému hehe, a tak můj starý počítač fungoval dobře, pozdravy z Kolumbie.