Després satisfer els requisits per la poder executar els scripts Bash, I comprendre com definir funcions, Aprèn com retornar valors en funcions Bash. Per això crearem un petit -però potent- programa en Bash que calculi les lletres dels DNI. Tinc bones notícies: Bash també pot ser instal·lat en Windows 10. Amb el que pot ser afegida tota la potència de Linux en sistemes operatius, diguem ... diferents.
Primer de tot, tendim que comprendre com funcionen els subcadenes, Que com en qualsevol llenguatge, posseeix la possibilitat de retornar parts d'una cadena a partir de la indicació de la cadena, la posició i la longitud de l'segment. Vegem un exemple d'aquest comportament. Creem el nostre script amb
$ touch prueba_substring $
Després afegim el següent codi amb el vostre editor preferit. En mode terminal meu editor preferit és mcedit. Però últimament veig que nano està prenent força.
#!/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
Afegint els permisos i executant així:
$ chmod +x prueba_substring $ ./prueba_substring $
Hauria, si tot ha anat bé, llançar el següent resultat:
Linux Con Ubuntu y Ubunlog, claro! Linux Aprendo en Ubunlog
Funcionament de les subcadenes
Com podeu observar a dalt he ressaltat les línies 13 a la 15 de l'script i pas a explicar el seu codi. ressò amb el paràmetre «-i» permet mostrar el caràcter següent línia, Aquest caràcter l'hem definit en la línia 7 i assignat a la variable «ret».
Línia 13: Mostro la subcadena (subcadena) De la variable CADENA, descrita en la línia 8, a partir de la posició 12. Sempre començant a comptar des de la posició 0.
Línia 14: A partir de la posició 12 de la variable CADENA, mostro un segment de 5. Com comprovareu això correspon a la subcadena "Linux".
Línia 15: He compost XNUMX nova cadena tancada entre cometes que començament com «Aprenc a«, per continuar amb una subcadena de la variable CADENA des de la posició 31, prenent un segment de 7: Això correspon a «Ubunlog».
Funcions amb devolució de dades
El mecanisme de devolució de dades amb Bash es produeix mitjançant l'ordre «return», si bé, quan renemos que igualar-lo a una variable Bash implementa un mecanisme «estrany», a què cal acostumar. Vegem el següent exemple:
#!/usr/bin/env bash function suma(){ local a=$1 local b=$2 return $(( $a + $b )) } suma 12 23 retorno=$? echo $retorno
Les funcions sempre han de ser definides abans d'usar-les en Bash, Per tant, després de la shebang declarem la funció suma, a la línia 4 definim mitjançant «local» l'assignació de el primer dels paràmetres ($ 1) a la variable «a». Idèntic procediment en la línia 5, on assignem el segon paràmetre a ($ 2) a la variable «b». En la línia nou cridem a la funció suma amb dos paràmetres que es convertiran pel mecanisme descrit en les variables «a» i «b» i amb «return» els tornem sumat, Com fàcilment pot observar-se en la instruccions de la funció.
Assignem a la variable «retorn» a la línia 10 el resultat de l'execució de la funció suma.
Després de l'estudi i comprensió de l'la forma en què es practiquen les devolucions de valors i assignació a les variables passem a veure el nostre programa d'el càlcul de lletres de DNI amb Bash.
Script per al càlcul de lletres de DNI amb 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 lletra del nostre DNI correspon a l' mòdul 23 de l'nombre. És a dir, dividim el nombre entre 23 y en comptes d'observar el quocient, observem la resta de la divisió. El altres paraules, com els nombres divisibles per 23 donaran zero, La lletra que li correspon és la «T», Ja que aquesta és la posició 0, Com hem vist en l'script de dalt, totes les subcadenes comencen a comptar des de zero. És a dir, amb el mòdul anem a obtenir sempre nombres entre 0 (lletra «T») i 22 (lletra «O»). En Bash, com en altres llenguatges s'obté el mòdul mitjançant l'operador per cent '% ».
En la linea 5 definim les lletres en el seu ordre. És obvi, no es pot canviar l'ordre per obtenir resultats fiables. Al if de la línia 9 estem preguntant si a l'trucar a l'script havia un nombre com a paràmetre. En cas de no existir paràmetre el sol·licitem per teclat amb les instruccions de les línies 11 a 13. Si l'script va ser cridat amb un nombre per calcular l'ordre en la línia 15 assigna aquest paràmetre a la variable «ndni».
En la línia 23 fem referència a la funció mòdul mitjançant el paràmetre de variable «ndni», bé hagi estat recollit com a paràmetre en bash, o per teclat com a entrada. En la línia 24 s'assigna la devolució de la funció a la variable «mod». En la línia 25 mostramos el nombre, un guió i la lletra corresponent a la posició segons el càlcul de la lliçó i la subcadena.
Provant el nostre scritp de DNI
$ ./dni 12345678 12345678-Z
O bé,
$ ./dni Cálculo DNI, Introduce número
Tots els nostres scripts d'incloure un paràmetre «-a» per a l'autor i un altre «-h» per a l'ajuda i sintaxi. Com que això ho hem vist en anteriors articles o ho deixo a vosaltres per no fer el codi més farragós.
Espero i desitjo que aquest article hagi estat del vostre interès.
Hola algú em pot ajudar necessito instal·lar Lubuntu al meu ordinador d'escriptori vella però està no em deixa instal·lar per USB i la unitat de dvd està danyada, només vull instal·lar http://www.plop.at a Ubuntu 16.04 LTS però no es com fer-ho. gràcies
Omar,
Segons comentes la situació no és molt alagüeña: usb no es deixa i unitat dvd danyada. Però també comentes que la «ordinador és vella», això vol dir que tens una de nova. Prova a posar la instal·lació en un disc dur des de la computadora que funciona i tractar d'instal · lar des d'aquest disc.
Salutacions
Tens un ordinador i una caixa extraïble? Munta el disc dur de l'ordinador antic a la caixa extraïble per usb i inicia el disc d'instalacion.
Linux i Unix no tenen en compte el maquinari a nivell arrencada, amb la qual cosa pots posar de nou el disc amb el linux instal·lat.
Moltes gràcies li explico que el que vaig fer va ser passar d'Ubuntu 16.04 a Lubuntu 16.04 dins el mateix sistema operatiu jeje i així va quedar treballant bé el meu ordinador velleta jeje salutacions des de Colòmbia.