Programmation en bash - partie 2

Deuxième partie cette mini-tutoriel programmation en Frapper, où nous apprenons à utiliser des cycles et d'autres outils qui nous aideront à améliorer les fonctionnalités de notre scripts.

Le conditionnel If

La fonction de If est d'appliquer un filtre et d'effectuer une opération ou une tâche pour chaque type de filtre appliqué. Sa structure est la suivante:

Si [condition]; puis commandes elif [condition]; alors les commandes else; commandes fi

Un exemple est présenté à côté de la boucle For dans sa section respective.

Cycles

1. While: il exécutera toutes les commandes spécifiées entre faire et terminé tant que la condition est vraie. Si nous voulons lui passer des opérateurs de comparaison, l'expression doit être entre crochets.

pendant que CONDITION / COMMAND effectue les commandes

Exemple: table de multiplication d'un nombre

#! / bin / bash X = 1 echo "Entrez un nombre et appuyez sur ENTREE" read M # La boucle contrôle que X est inférieur ou égal à 10 tandis que [$ X –le 10] fait #In R nous stockons la multiplication de X par MR = $ [X * M] # Cette multiplication est imprimée à l'écran echo "$ M * $ X = $ R" #Avec let, on augmente la valeur de X de 1 unité soit X = $ X + 1 fait

2. Pour: stocke une liste d'éléments dans une variable, qui sera utilisée pour effectuer certaines opérations à chaque cycle.

pour VARIABLE dans ELEMENTS faire les commandes faites

Exemple: programme qui copie un fichier d'un dossier à un autre, en remplaçant un ancien fichier.

# / bin / bash #Nous établissons les répertoires source et destination ORIGIN = / home / user / Downloads DESTINATION = / home / user / Documents # Nous nous positionnons dans le cd source $ ORIGIN #De tous les fichiers, nous ne voulons que celui qui est # appeler FILE pour FILE dans * do ARCH-DESTINATION = "$ DESTINATION / $ FILE" # -f nous filtre les fichiers normaux, puisque les répertoires ne sont # rien de bon pour nous. –Ne filtre pas # fichiers «plus récents» que ceux # trouvés dans le dossier de destination si [-f $ FILE] && [$ FILE –nt $ ARCH-DESTINATION]; puis echo "Copie de $ FILE ..." # nous copions le fichier avec cp cp $ FILE $ ARCH-DESTINATION fi done #Nous cd pour quitter le dossier source cd

Autre exemple: script où l'utilisateur doit deviner un nombre aléatoire généré par l'ordinateur.

# / bin / bash #Un nombre aléatoire est généré de 1 à 10, il est # enregistré dans RANDOM RANDOM = $ [$ RANDOM% 10 + 1] tandis que [1] do echo –n "Entrez un nombre:" lisez NUM # Comparez si le nombre choisi par l'utilisateur est #égal à RANDOM; n'oubliez pas d'utiliser $ pour évaluer les #valeurs des variables et non leurs noms si [“$ NUM –eq“ $ RANDOM ”]; puis echo "Vous avez raison!" #break permet de terminer la boucle pendant la pause #Si le nombre est inférieur à RANDOM elif [“$ NUM –gt“ $ RANDOM ”]; then echo "C'est moins" "Sinon, c'est plus grand que RANDOM sinon echo" EST plus grand "fi done

3. Jusqu'à: structure assez similaire à While, sauf que le code s'exécute toujours alors que l'évaluation de la condition est négative, c'est-à-dire que le programme continue à s'exécuter "jusqu'à ce que la condition se produise"

jusqu'à ce que CONDITION / COMMAND effectue les commandes

Exemple: imprimez les nombres 10-20 dans l'ordre décroissant

#! / bin / bash CONT = 20 # Tant que le compteur est inférieur à 10 (-lt, «inférieur # à») le code est exécuté jusqu'à [$ CONT -lt 10]; do echo "COUNTER $ CONT" #A CONT est soustrait d'une unité soit CONT- = 1 done

4. Select: ce dernier cycle est un cas particulier, car il est généralement utilisé pour faire des menus rapidement. Cela fonctionne de manière similaire à la boucle For.

sélectionnez VARIABLE dans la LISTE des commandes effectuées

Exemple: donnez à l'utilisateur la possibilité de continuer ou de terminer le script.

#! / bin / bash #item est une variable qui répond à ce que #user choisit, Continuer et Terminer sont les #options disponibles pour lui, bien que d'autres options puissent être ajoutées terminer le programme, puis avec pause nous sortons du cycle. if [$ item = "Terminer"]; puis break fi done
Merci Juan Carlos Ortiz!

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.

  1.   Difficile moyen dit

    Je pense quelque chose comme ceci: tar -cf - Répertoire | (cd / autre / répertoire; tar -xvf -)

    Ensuite, cela ressemblerait à / another / directory / Directory
    De cette façon, j'ai compressé un répertoire et vous le décompressez dans un autre endroit….

  2.   Miguel Angel dit

    Bonjour, bon tuto, j'apprends sur le sujet et tout va bien, seulement je n'ai pas pu faire un programme qui m'aide, pour voir si tu peux m'aider s'il te plait.

    J'ai besoin de faire un cycle, dans lequel il recevra comme paramètres une liste d'un fichier source, cette liste n'apporte que des noms (sans extension), pour que le cycle fasse ce qui suit, recherchez ledit nom reçu dans un répertoire (qui est celui que nous rechercherons) , extrayez et copiez le fichier (nom complet déjà avec l'extension) et le chemin absolu et créez-le dans un autre fichier de destination.

    Jusqu'à présent, j'ai ce qui suit:

    pendant la lecture de la ligne
    do
    echo -e "$ ligne"
    find / home / monutilisateur / dof "$ line" -exec readlink -f {};
    done <testlist.txt Jusqu'à présent, j'ai lu le fichier, toutes les lignes qu'il contient, mais je ne peux pas le faire rechercher ce fichier et extraire les informations, si vous pouvez m'aider s'il vous plaît, merci. À votre santé

  3.   Pamela galaviz dit

    Merci beaucoup pour la contribution 🙂

  4.   Mario Xavier dit

    salut ... J'espère que vous pourrez aider dans la prochaine pratique ... Décompressez le fichier en tgz dans le répertoire spécifié, en plus de spécifier l'utilisateur et le groupe pour tous les répertoires et fichiers existants, et d'attribuer des autorisations aux fichiers et répertoires
    remarque: fichiers prêts pour la lecture et l'écriture
    autorisation d'exécution des répertoires

  5.   Juank dit

    ARCH-DESTINATION est une variable dans laquelle nous voulons enregistrer le chemin du fichier de destination, enregistrer pour la redondance. Ensuite, à cette variable, nous indiquons la variable DESTINATION, qui ci-dessus contient le chemin du dossier Documents et nous ajoutons la "variable" FILE, qui contient le nom du fichier. Si ce fichier était, par exemple, list.doc, la variable ARCH-DESTINATION serait égale à /home/Usuario/Documentos/listado.doc

  6.   Utilisons Linux dit

    C'est l'article précédent. Vous pouvez y accéder à http://usemoslinux.blogspot.com

    Étreinte! Paul.

  7.   Franck dit

    Bonjour mec juste merci, très bien votre blog, mais je ne peux pas obtenir la première partie de la programmation dans Bash, où je l'obtiens merci, salutations

  8.   Saito Mordraw dit

    Deux parties extraordinaires, mes sincères félicitations.

    Simplement merveilleux.

  9.   Fredy dit

    Bien

  10.   Hugo dit

    Bonjour, je fais un programme avec un CASE, ce que je veux qu'il fasse et je ne sais pas comment, par exemple:

    echo Choisit une option:
    echo
    echo 1. option 1
    echo 2. option 2
    echo 3. option 3
    echo 4. option 4
    echo 5. Quitter
    lire var
    case "$ var" dans
    1)
    echo "Vous avez sélectionné l'option 1"
    ;;
    2)
    echo "Vous avez sélectionné l'option 2"
    ;;
    3)
    chassèrent "….."
    ;;
    4)
    chassèrent "…."
    ;;
    5)
    chassèrent "…"

    ;;
    *)
    echo "mauvaise option"
    ;;
    Esac

    ok ce que je ne sais pas faire c'est que quand je sélectionne l'option 4 qui est de quitter, demande si je veux vraiment sortir, et donne-moi 2 options O & N

    et l'autre est que lorsque vous sélectionnez autre chose que les nombres 1..5, ne votez pas pour moi à partir du script….

    Pourriez-vous m'aider merci.

  11.   DAPAMA21 dit

    Salut, j'ai commencé le script il y a 1 mois et grâce à vos messages de script. J'aurai fait environ 15-20. Merci beaucoup d'avance. Mais maintenant, notre professeur nous a confié un travail dont je suis devenu stagnant. Puisque l'enseignant demande:
    en passant un répertoire, copiez chez vous tous les fichiers qui se trouvent dans ce répertoire par ordre alphabétique et en les nommant fichier1 fichier2 etc ... etc ...
    Maintenant, je suis au moment de la recherche ou de la localisation, je voulais utiliser find mais en lui donnant le code d'erreur lorsque je le mets via dev null, les autorisations refusées, je me trompe et en mettant la localisation que je suis ici:
    localiser $ 1 | grep "/ $ {1} \ $"
    mais bien sûr avec cela, ils sortent tous ...
    Merci beaucoup si vous le lisez.
    Si vous pouvez m'aider, ce serait une grande faveur.

  12.   luis dit

    J'aimerais que vous m'aidiez avec ça.
    1.-Entrer un nombre entier sur le clavier et afficher deux fois et tripler ce nombre à l'écran. 2.- Créez un programme pour décider si un nombre saisi au clavier est divisible par 3 ou non.
    3.- Créez un programme pour trouver la somme de: ???????? + ???????? + ???????? + ???????? + ⋯? ???????
    4.- Faites un programme pour trouver la somme 1 + 3 + 5 + 7 + 9 · · · + (2n + 1).
    5.-Créez un programme qui imprime le mot Linux sur l'écran 10 fois
    6.-Créez un programme qui imprime le mot Linux sur l'écran le nombre de fois indiqué par un utilisateur.
    7.-Entrez un montant en heures et convertissez-les en minutes et secondes.
    8.-Calculer l'aire d'un triangle
    9.-Entrez un nombre au clavier, puis si vous entrez 2, il doit être au carré, 3 au cube, 4 au quatrième et ainsi de suite jusqu'à 6.
    10-Calculez la rente qu'un étudiant doit payer, le code de spécialité doit être entré, et les jours en retard:
    CODE
    SPÉCIALITÉ
    MONTANT
    PENDANT PAR JOUR
    1
    L'INFORMATIQUE
    160
    1
    2
    ALLAITEMENT
    150
    1.5
    3
    SECRÉTARIAT
    140
    2
    4
    TOURISME
    180
    2.5
    5
    COMPTABLE
    160
    1
    Vous devez indiquer la spécialité que vous étudiez, le coût de la pension, le défaut et le montant total à payer.

  13.   charly dit

    Bonjour, quelqu'un peut-il m'aider?
    J'ai besoin de «Demander trois mots au clavier et les afficher par ordre alphabétique de A à z»
    En langage Bash ou sh pour LINUX porfaborrrr