Après avoir satisfait le exigences pour être capable d'exécuter des scripts bash, et comprend comment définir des fonctions, apprendre retourne les valeurs dans les fonctions bash. Pour cela, nous allons créer un petit programme «mais puissant» dans Bash qui calculer les lettres du DNI. J'ai de bonnes nouvelles: Bash peut aussi être installé sur Windows 10. Avec ce qui peut être ajouté toute la puissance de Linux dans les systèmes d'exploitation, disons ... différent.
Tout d'abord, nous devons comprendre comment le sous-chaînes, qui, comme dans n'importe quelle langue, a la possibilité de renvoyer des parties d'une chaîne à partir de l'indication de la chaîne, de la position et de la longueur du segment. Regardons un exemple de ce comportement. Nous créons notre script avec
$ touch prueba_substring $
Ensuite, nous ajoutons le code suivant avec votre éditeur préféré. En mode terminal mon éditeur préféré est mcedit. Mais dernièrement je vois que le nano gagne en force.
#!/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
Ajout des autorisations et exécution comme ceci:
$ chmod +x prueba_substring $ ./prueba_substring $
Il devrait, si tout s'est bien passé, renvoyer le résultat suivant:
Linux Con Ubuntu y Ubunlog, claro! Linux Aprendo en Ubunlog
Opération de sous-chaîne
Comme vous pouvez le voir ci-dessus J'ai mis en évidence les lignes 13 à 15 du script et de l'étape à expliquer votre code. Écho avec la paramètre "-e" montrons le caractère de la ligne suivante, nous avons défini ce caractère dans le ligne 7 et affectée à la variable «ret».
Ligne 13: je montre la sous-chaîne (sous-chaîne) de la variable CHAIN, décrite à la ligne 8, à partir de la position 12. Commencer toujours à compter à partir de la position 0.
Ligne 14: depuis position 12 de la variable CHAIN, je montre un segment de 5. Comme vous le vérifierez, cela correspond à la sous-chaîne "Linux".
Ligne 15: je compose un nouvelle chaîne entre guillemets Je commence par «j'apprends en», pour continuer avec une sous-chaîne de la variable CHAIN à partir de la position 31, en prenant un segment de 7: cela correspond à «Ubunlog».
Fonctions de publication
Le mécanisme de retour avec Bash est produit par la commande "return", bien que, lorsque nous devons le faire correspondre à une variable Bash, il implémente un mécanisme "étrange" auquel il faut s'habituer. Regardons l'exemple suivant:
#!/usr/bin/env bash function suma(){ local a=$1 local b=$2 return $(( $a + $b )) } suma 12 23 retorno=$? echo $retorno
Les fonctions doivent toujours être définies avant de les utiliser dans Bash, par conséquent, après le case nous déclarons la fonction somme, à la ligne 4 on définit au moyen de «local» l'affectation du premier des paramètres ($ 1) à la variable "a". Procédure identique à la ligne 5, où on affecte le deuxième paramètre a ($ 2) à la variable «b». À la ligne neuf, nous appelons la fonction somme avec deux paramètres qui seront convertis par le mécanisme décrit dans le les variables "a" et "b" et avec "return" nous les retournons ajoutées, comme on peut facilement le voir dans les instructions de fonctionnement.
Nous attribuons la variable "return" dans le ligne 10 le résultat de l'exécution de la fonction somme.
Après avoir étudié et compris la manière dont les retours de valeurs et l'affectation aux variables sont pratiqués Allons voir notre programme du calcul des lettres DNI avec Bash.
Script pour calculer les lettres DNI avec 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 lettre de notre DNI correspond à module numéro 23. C'est, nous divisons le nombre par 23 y au lieu de regarder le quotient, nous observons le reste de la division. Les autres mots, comme les nombres divisibles par 23 donneront zéro, la lettre qui lui correspond est le «T», depuis cela est la position 0, comme nous l'avons vu dans le script ci-dessus, toutes les sous-chaînes commencent à compter à partir de zéro. Autrement dit, avec le module, nous obtiendrons toujours des nombres entre 0 (lettre "T") et 22 (lettre "O"). En bash, comme dans d'autres langues le module est obtenu au moyen de l'opérateur de pourcentage «%».
Sur ligne 5 nous définissons les lettres dans votre commande. C'est évident, l'ordre ne peut pas être modifié pour des résultats fiables. Dans le si de la ligne 9 nous demandons si lors de l'appel du script il y avait un nombre comme paramètre. S'il n'y a pas de paramètre, nous le demandons au clavier avec les instructions des lignes 11 à 13. Si le script a été appelé avec un numéro pour calculer la commande à la ligne 15, affectez ce paramètre à la variable «ndni».
À la ligne 23, nous nous référons à la fonction modulo via le paramètre de variable «ndni», soit elle a été collectée en paramètre dans bash, soit par clavier en entrée. En ligne 24 le retour de la fonction est affecté à la variable «mod». Sur la ligne des 25 mon montre le nombre, un tiret et la lettre correspondant à la position selon le calcul du module et de la sous-chaîne.
Tester notre script DNI
$ ./dni 12345678 12345678-Z
Ou bien,
$ ./dni Cálculo DNI, Introduce número
Tous nos scripts doivent inclure un paramètre "-a" pour l'auteur et un autre "-h" pour l'aide et la syntaxe. Comme nous l'avons vu dans les articles précédents ou je vous laisse le soin de ne pas alourdir le code.
J'espère et j'espère que cet article a été de votre intérêt.
Bonjour, quelqu'un peut-il m'aider, j'ai besoin d'installer lubuntu sur mon ancien bureau mais il ne me laissera pas installer via USB et le lecteur DVD est endommagé, je veux juste installer http://www.plop.at à Ubuntu 16.04 LTS mais je ne sais pas comment le faire. Merci
Omar,
Comme vous l'avez mentionné, la situation n'est pas très prometteuse: l'USB n'est pas autorisé et le lecteur DVD est endommagé. Mais vous commentez également que "l'ordinateur est ancien", cela signifie que vous en avez un nouveau. Essayez de mettre l'installation sur un disque dur à partir de votre ordinateur de travail et essayez de l'installer à partir de ce disque.
salutations
Avez-vous un ordinateur et un boîtier amovible? Montez le disque dur de l'ancien ordinateur dans la boîte USB amovible et démarrez le disque d'installation.
Linux et Unix ne prennent pas en compte le matériel au niveau du démarrage, avec lequel vous pouvez remettre le disque avec linux installé.
Merci beaucoup je vous dis que ce que j'ai fait était de passer d'Ubuntu 16.04 à Lubuntu 16.04 dans le même système d'exploitation hehe et c'est ainsi que mon ancien ordinateur fonctionnait bien hehe salutations de Colombie.