Impara a calcolare la lettera DNI utilizzando uno script Bash

Dopo aver soddisfatto il requisiti per essere in grado di eseguire script bashe capire come definire le funzioni, impara come restituisce valori nelle funzioni bash. Per questo creeremo un piccolo programma "ma potente" in Bash calcolare le lettere del DNI. Ho una buona notizia: anche Bash può farlo essere installato su Windows 10. Con ciò che può essere aggiunto tutta la potenza di Linux nei sistemi operativi, diciamo ... diverso.

Prima di tutto, dobbiamo capire come il sottostringhe, che, come in qualsiasi lingua, ha la possibilità di restituisce parti di una stringa dall'indicazione della catena, la posizione e la lunghezza del segmento. Diamo un'occhiata a un esempio di questo comportamento. Creiamo il nostro script con

$ touch prueba_substring
$ 

Quindi aggiungiamo il seguente codice con il tuo editor preferito. In modalità terminale il mio editor preferito è mcedit. Ma ultimamente vedo che il nano sta guadagnando forza.

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

Aggiunta delle autorizzazioni ed esecuzione in questo modo:

$ chmod +x prueba_substring
$ ./prueba_substring
$

Se tutto è andato bene, dovrebbe restituire il seguente risultato:

 Linux Con Ubuntu y Ubunlog, claro!

 Linux

 Aprendo en Ubunlog

Operazione sottostringa

Come puoi vedere sopra Ho evidenziato le righe dalla 13 alla 15 dallo script e dal passaggio a spiega il tuo codice. Echo con il parametro "-e" mostriamo il file carattere della riga successiva, abbiamo definito questo carattere nel riga 7 e assegnata alla variabile «ret».

Riga 13: mostro la sottostringa (sottostringa) della variabile CHAIN, descritta alla riga 8, dalla posizione 12. Cominciando sempre a contare dalla posizione 0.

Linea 14: da posizione 12 della variabile CATENA, mostro un segmento di 5. Come verificherai, questo corrisponde al file sottostringa "Linux".

Riga 15: compongo un file nuova stringa racchiusa tra virgolette Comincio come «imparo in«, per continuare con una sottostringa della variabile CHAIN dalla posizione 31, prendendo un segmento di 7: questo corrisponde a «Ubunlog».

Funzioni di postback

Il meccanismo di ritorno con Bash è prodotto dal comando "return", sebbene quando dobbiamo abbinarlo a una variabile Bash implementa un meccanismo "strano", a cui devi abituarti. Diamo un'occhiata al seguente esempio:

#!/usr/bin/env bash

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

suma 12 23
retorno=$?
echo $retorno

Le funzioni devono essere sempre definite prima di utilizzarle in Bash, quindi, dopo il faccenda dichiariamo la funzione sum, alla riga 4 definiamo mediante «locale» l'assegnazione del primo dei parametri ($ 1) alla variabile "a". Procedura identica sulla riga 5, dove assegniamo il secondo parametro a ($ 2) alla variabile «b». Nella riga nove chiamiamo la funzione somma con due parametri che verranno convertiti dal meccanismo descritto in variabili "a" e "b" e con "return" le restituiamo aggiunte, come si può facilmente vedere nelle istruzioni di funzionamento.

Assegniamo la variabile "return" in riga 10 il risultato dell'esecuzione della funzione sum.

Dopo aver studiato e compreso il modo in cui vengono praticate restituzioni di valori e assegnazione a variabili Andiamo a vedere il nostro programma della calcolo delle lettere DNI con Bash.

Script per calcolare le lettere DNI con 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 lettera del nostro DNI Corrisponde a modulo numero 23. Questo è, dividiamo il numero per 23 y invece di guardare il quoziente, osserviamo il resto della divisione. Le altre parole, come i numeri divisibili per 23 danno zero, la lettera che corrisponde ad essa è la «T», da questo è la posizione 0, come abbiamo visto nello script sopra, tutte le sottostringhe iniziano a contare da zero. Cioè, con il modulo otterremo sempre dei numeri tra 0 (lettera "T") e 22 (lettera "O"). In Bash, come in altre lingue il modulo si ottiene tramite l'operatore percentuale «%».

Qui alla riga 5 definiamo le lettere nel tuo ordine. È ovvio, l'ordine non può essere modificato per risultati affidabili. Nel se della linea 9 stiamo chiedendo se quando si chiamava lo script c'era un numero come parametro. Se non c'è un parametro, lo richiediamo da tastiera con le istruzioni alle righe dalla 11 alla 13. Se lo script è stato chiamato con un numero per calcolare l'ordine alla riga 15, assegnate questo parametro alla variabile «ndni».

Nella riga 23 si fa riferimento alla funzione modulo tramite il parametro di variabile «ndni», o è stata raccolta come parametro in bash, o da tastiera come input. Nella riga 24 il ritorno della funzione è assegnato alla variabile «mod». Sulla linea dei 25 mmostriamo il numero, un trattino e la lettera corrispondente alla posizione secondo il calcolo del modulo e della sottostringa.

Testare il nostro script DNI

$ ./dni 12345678
12345678-Z

Oh bene,

$ ./dni

 Cálculo DNI, Introduce número

Tutti i nostri script dovrebbero includere un parametro "-a" per l'autore e un altro "-h" per aiuto e sintassi. Come abbiamo visto in articoli precedenti o lascio a voi il compito di evitare di rendere il codice più ingombrante.
Spero e spero che questo articolo sia stato di tuo interesse.


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.

  1.   Omar B.M. suddetto

    Ciao, qualcuno può aiutarmi, devo installare lubuntu sul mio vecchio desktop ma non mi consente di installare tramite USB e l'unità dvd è danneggiata, voglio solo installare http://www.plop.at a Ubuntu 16.04 LTS ma non so come farlo. Grazie

    1.    Immagine segnaposto Pedro Ruiz Hidalgo suddetto

      Omar,

      Come hai detto, la situazione non è molto promettente: usb non è rimasta e l'unità dvd è danneggiata. Ma dici anche che "il computer è vecchio", il che significa che ne hai uno nuovo. Prova a mettere l'installazione su un disco rigido dal tuo computer funzionante e prova a installarlo da quell'unità.

      saluti

    2.    Cesare Delba suddetto

      Hai un computer e una scatola rimovibile? Montare il disco rigido del vecchio computer nella scatola USB rimovibile e avviare il disco di installazione.
      Linux e Unix non tengono conto dell'hardware a livello di avvio, con il quale è possibile rimettere il disco con linux installato.

    3.    Omar B.M. suddetto

      Grazie mille ti dico che quello che ho fatto è stato passare da Ubuntu 16.04 a Lubuntu 16.04 all'interno dello stesso sistema operativo ehehe e quindi il mio vecchio computer funzionava bene hehe saluti dalla Colombia.