Na het voldoen aan de vereisten voor bash-scripts kunnen uitvoeren, en begrijp hoe functies te definiëren, leren hoe waarden teruggeven in bash-functies Hiervoor gaan we een klein ―maar krachtig― programma maken in Bash That bereken de letters van de DNI Ik heb goed nieuws: Bash kan ook worden geïnstalleerd op Windows 10 Met wat alle kracht van Linux in besturingssystemen kan worden toegevoegd, laten we zeggen ... anders.
Allereerst moeten we begrijp hoe de subtekenreeksen, die, zoals in elke taal, de mogelijkheid heeft om retourneer delen van een string van de aanduiding van de ketting, de positie en de lengte van het segment. Laten we eens kijken naar een voorbeeld van dit gedrag. We maken ons script met
$ touch prueba_substring $
Vervolgens voegen we de volgende code toe met uw favoriete editor. In terminalmodus mijn favoriete editor is mcedit Maar de laatste tijd zie ik dat nano aan kracht wint.
#!/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
De rechten toevoegen en als volgt uitvoeren:
$ chmod +x prueba_substring $ ./prueba_substring $
Het zou, als alles goed is gegaan, het volgende resultaat moeten opleveren:
Linux Con Ubuntu y Ubunlog, claro! Linux Aprendo en Ubunlog
Substring-operatie
Zoals je hierboven kunt zien Ik heb de regels 13 tot 15 gemarkeerd van het script en stap naar leg je code uit. echo de parameter "-e" laten we de volgende regel karakterhebben we dit karakter gedefinieerd in de regel 7 en toegewezen aan de variabele «ret».
Regel 13: Ik toon de deelstring (deelstring) van de variabele CHAIN, beschreven in regel 8, vanaf positie 12. Altijd beginnen te tellen vanaf positie 0.
Lijn 14: Van positie 12 van de CHAIN-variabele, ik laat een segment van 5 zien Zoals u zult verifiëren, komt dit overeen met het substring "Linux".
Regel 15: Ik componeer een nieuwe tekenreeks tussen aanhalingstekens Ik begin als «Ik leer in«, om verder te gaan met een deelstring van de variabele CHAIN vanaf positie 31, een segment van 7 nemen: dit komt overeen met «Ubunlog».
Postback-functies
Het return-mechanisme met Bash wordt geproduceerd door het "return" -commando, hoewel, wanneer we het moeten matchen met een Bash-variabele, het een "vreemd" mechanisme implementeert, waar je aan moet wennen. Laten we naar het volgende voorbeeld kijken:
#!/usr/bin/env bash function suma(){ local a=$1 local b=$2 return $(( $a + $b )) } suma 12 23 retorno=$? echo $retorno
Functies moeten altijd worden gedefinieerd voordat ze in Bash worden gebruiktdaarom na de keet we declareren de functiesom, op regel 4 we definiëren door middel van «lokaal» de toewijzing van de eerste van de parameters ($ 1) naar de variabele "a". Identieke procedure op regel 5, waar we wijzen de tweede parameter a ($ 2) toe aan de variabele «b» In regel negen noemen we de somfunctie met twee parameters die zullen worden geconverteerd door het mechanisme dat wordt beschreven in de variabelen "a" en "b" en met "return" retourneren we ze toegevoegd, zoals gemakkelijk te zien is in de functie-instructies.
We kennen de variabele "return" toe in de regel 10 het resultaat van de uitvoering van de functie som.
Na het bestuderen en begrijpen van de manier waarop het teruggeven van waarden en toewijzing aan variabelen worden geoefend Laten we ons programma van de berekening van DNI-letters met Bash.
Script om DNI-letters te berekenen met 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 brief van onze DNI komt overeen met nummer module 23 Esto es, we delen het getal door 23 y in plaats van naar het quotiënt te kijken, we observeren de rest van de divisie De andere woorden, zoals getallen die deelbaar zijn door 23, geven nul, de brief die correspondeert ermee is de «T», sinds dit is positie 0, zoals we hebben gezien in het bovenstaande script, alle subtekenreeksen tellen vanaf nul Dat wil zeggen, met de module zullen we altijd cijfers krijgen tussen 0 (letter "T") en 22 (letter "O") In Bash, net als in andere talen de module wordt verkregen door middel van de procent operator «%».
In de regel 5 definiëren we de letters in uw bestelling. Het is duidelijk, de volgorde kan niet worden gewijzigd voor betrouwbare resultaten. In de als van de lijn 9 we vragen als er bij het aanroepen van het script een nummer als parameter was Als er geen parameter is, vragen we deze op het toetsenbord met de instructies op regel 11 tot 13. Als het script werd aangeroepen met een nummer om de volgorde op regel 15 te berekenen, wijs deze parameter dan toe aan de variabele «ndni».
In regel 23 verwijzen we naar de modulo-functie via de parameter van variabele «ndni», ofwel verzameld als een parameter in bash, of via het toetsenbord als invoer In regel 24 wordt de terugkeer van de functie toegewezen aan de variabele «mod». Op de lijn van 25 meterwe tonen het nummer, een streepje en de letter die overeenkomt met de positie volgens de berekening van de modulus en de deelstring.
Ons DNI-script testen
$ ./dni 12345678 12345678-Z
O goed,
$ ./dni Cálculo DNI, Introduce número
Al onze scripts moeten een parameter "-a" bevatten voor de auteur en een andere "-h" voor hulp en syntaxis. Zoals we in eerdere artikelen hebben gezien, laat ik het aan jou over om te voorkomen dat de code omslachtiger wordt.
Ik hoop en hoop dat dit artikel uw interesse heeft gewekt.
Hallo, kan iemand me helpen, ik moet lubuntu op mijn oude desktop installeren, maar ik kan het niet via USB installeren en het dvd-station is beschadigd, ik wil het gewoon installeren http://www.plop.at naar Ubuntu 16.04 LTS, maar ik weet niet hoe ik het moet doen. Bedankt
Omar,
Zoals u al zei, is de situatie niet erg veelbelovend: usb is niet achtergelaten en dvd-drive is beschadigd. Maar je merkt ook op dat de "computer oud is", dat wil zeggen dat je een nieuwe hebt. Probeer de installatie vanaf uw werkende computer op een harde schijf te zetten en probeer deze vanaf die schijf te installeren.
groeten
Heb je een computer en een verwijderbare doos? Monteer de harde schijf van de oude computer in de verwijderbare usb-box en start de installatieschijf.
Linux en Unix houden geen rekening met de hardware op opstartniveau, waarmee je de disk weer kunt plaatsen met de linux er op geïnstalleerd.
Heel erg bedankt, ik vertel je dat wat ik deed was om van Ubuntu 16.04 naar Lubuntu 16.04 te gaan binnen hetzelfde besturingssysteem hehe en dus werkte mijn oude computer goed hehe groeten uit Colombia.