Le 14 septembre 2017, nous avons publié une version actualisée de notre Politique de confidentialité. En utilisant video2brain.com vous vous engagez à respecter ces documents mis à jour. Veuillez donc prendre quelques minutes pour les consulter.

Découvrir l'écriture de scripts en Bash

Lire un fichier à l'aide d'une boucle while

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Pour lire le contenu du fichier, vous pouvez utiliser la commande read à l'intérieur d'une boucle while.
06:24

Transcription

On va profiter maintenant de notre connaissance de la boucle for pour faire quelque chose de pratique. Et pour cela, j'ai créé un fichier ici, qui s'appelle cepages. Si je fais un petit cat de cepages, je vois que j'ai mis à l'intérieur des noms de cepages. C'est donc un fichier texte qui contient sur chaque ligne un nom de cepages. Notez une chose : ici, j'ai un cepage sur deux mots, cabernet franc. Bon, maintenant je vais reprendre mon fichier de script avec ce cepage, et je voudrais lire maintenant ma liste de cepage. Alors je vais peut-être recommencer depuis le début d'ailleurs. Donc je vais faire une petite copie de boucle pour garder vers boucle2 par exemple. Et je vais éditer boucle2, ça me permettra de garder l'ancien code, OK. Je n'ai plus besoin de ma liste. Est-ce que je peux utiliser la boucle for pour faire une boucle sur une lecture de fichier ? Eh bien oui, parce que ce que je peux faire dans mon for, c'est au lieu de faire ça, liste, je vais l'enlever, je peux générer une commande. Vous vous souvenez de la syntaxe avec des accents. Mais je peux avoir aussi une syntaxe avec un $ et des parenthèses qui va, voilà, me permettre de placer entre $ parenthèses, une commande. Et je peux faire un cat, cat cepages par exemple. Alors, je vais enlever mon test, je vais laisser mon printf, et puis on va regarder ce que ça donne. C'est pas mal ça. Donc je fais un cat cepages, je fais un do, je fais un printf mon cepages, mais ça ne me parait pas mal du tout. Donc on va faire un petit make. Alors, observez bien le résultat : ici, j'ai mes lignes. J'ai une, deux, trois, quatre, cinq, six, sept lignes. Et ici j'ai une, deux, trois, quatre, cinq, six, sept, hui lignes. Et vous voyez ici que cabernet franc a été séparé. Ce qui se passe quand je fais un cat et que je l'utilise dans une boucle for, c'est qu'on va séparer mot par mot le contenu du fichier. C'est peut-être ce que vous voulez, peut-être que vous voulez prendre un texte et traiter mot par mot le texte. À ce moment-là, la boucle for est ce qu'il vous faut. Mais peut-être que vous voulez autre chose. Vous voulez traiter ligne par ligne. À ce moment-là, on va utiliser un autre type de boucle qui est aussi traditionnel dans les langages informatiques, c'est la boucle de type while, et on va utiliser notre boucle while. Donc, comme ceci. While, ça veut dire tant que. Donc on va faire une boucle tant que quelque chose se produit, et on va utiliser une commande interne du bash, qui s'appelle read. Donc on va faire comme ça : while read cepage, on pourrait dire ligne, line, on peut mettre ce qu'on veut. On va faire un do. Vous allez me dire : mais il est où le fichier ? Attendez, attendez, j'arrive, on va faire ça : mon cepage est. Ensuite, après un do, comme pour le for, on va faire un done, et ici, toute cette commande, on va faire une redirection comme ceci ,à partir de notre fichier cepages. On va dire ici : je fais un while en faisant un read, etc. et je vais faire une redirection, on pourrait dire dans l'autre sens c'est-à-dire que je vais prendre cepage et je vais le rediriger dans cette boucle while. Ça c'est vraiment un signe de redirection. Vous avez deux types de traitement sur une ligne de commande. C'est : vous pouvez faire en pipe, vous prenez un process et vous envoyez son résultat dans un autre et vous pouvez faire une redirection sur un fichier, notamment ou d'autres choses, en disant plus grand que, pour aller dans le résultat vers un fichier par exemple ou bien ici, c'est dans l'autre sens : on prend le fichier et on l'envoie dans le while. Ou on pourrait aussi l'exprimer comme ça : on prend le fichier comme source du while, et source du read en tout cas. On essaie ça, je vais commenter ceci, voilà, pour pas que ça nous trouble, et puis on va faire un make. Alors ici, je ne m'attendais pas à ça. Vous voyez, il y a cabernet franc séparé également. Ça veut dire que ça n'a pas marché. Alors on va peut-être vérifier quelque chose. Il y a quelque chose d'interne dans le bash qui s'appelle l'IFS. C'est quelque chose qu'on peut assimiler à une variable d'environnement, et je vais regarder quelle est l'IFS ici. Donc c'est $IFS en majuscule. Je vais faire un petit echo de ça, et mon autre problème avec ça, c'est que si cet IFS, donc qui veut dire : Internal Field Separator, le séparateur de champ interne, normalement le retour chariot, et si c'est un retour chariot, on va simplement me retourner un retour chariot, je ne vais pas pouvoir le voir. Donc je vais bien me mettre ici quelque chose, par exemple quelque chose, ensuite $IFS, ensuite quelque chose, et je veux voir ce qui va séparer tout ceci. On va regarder. Donc vous voyez que j'ai ici quelque chose et quelque chose. Je n'ai pas de retour chariot. Donc j'ai un problème d'IFS. Je vais attribuer à cette variable interne. Et je vais le faire comme ça, le retour chariot, de façon à ce que ce soit le séparateur de champ interne. Et si IFS maintenant est retour chariot, ici mon read va considérer que le séparateur de champ c'est le retour chariot, et donc lire ligne par ligne. On va voir ce que ça donne. Ah, bah voilà, ça va mieux. Donc j'ai bien cabernet franc. Donc l'IFS, c'est quelque chose que vous pouvez changer. Alors ce qu'on fait en général, c'est qu'on prend la valeur courante d'IFS, on la met dans une variable temporaire, on change l'IFS, et ensuite à la fin, on redonne l'IFS original. Donc on a vraiment ici un séparateur de champ interne. Et si vous voulez que ce soit la tabulation par exemple, parce qu'à un moment, vous voulez lire un fichier séparé par des tabulations, vous attribuez le signe de tabulation à l'IFS qui est \t, et ensuite, vous avez une séparation ici, qui vous permet de lire tous vos champs, séparés par des tabulations, à partir de votre fichier.

Découvrir l'écriture de scripts en Bash

Prenez en main l'écriture de scripts en Bash. Recevez et traitez les paramètres envoyés à vos scripts, manipulez des variables, découvrez les fonctions intégrées du Bash, etc.

1h41 (22 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Spécial abonnés
Date de parution :21 févr. 2017

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !