Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chapitre 3: La programmation SHELL. Chapitre 3 : La programmation SHELL 1. Définition  Le Shell est plus qu’un interpréteur de commandes: c’est également.

Similar presentations


Presentation on theme: "Chapitre 3: La programmation SHELL. Chapitre 3 : La programmation SHELL 1. Définition  Le Shell est plus qu’un interpréteur de commandes: c’est également."— Presentation transcript:

1 Chapitre 3: La programmation SHELL

2 Chapitre 3 : La programmation SHELL 1. Définition  Le Shell est plus qu’un interpréteur de commandes: c’est également un puissant langage de programmation. Tout système d’exploitation offre cette possibilité d’enregistrer dans des fichiers des suites de commandes invoquées par la suite. Mais aucun système d’exploitation n’offre autant de souplesse que le Shell dans ce type de programmation.  Un script est un fichier texte contenant les commandes à exécuter ainsi que, éventuellement, des structures de contrôle, des boucles, des assignations des variables, des fonctions et des commentaires. L’écriture des scripts, permet à l’administrateur de simplifier la réalisation des tâches répétitives.

3  Comme tout langage de programmation conventionnel, le Shell possèdent des instructions et des variables. Leurs noms et contenus sont des chaînes de caractères.  L’assignation (Bourne-Shell) d’une variable à une variable se fait par un nom; la référence à cette variable se fait par son nom précédé du caractère « $ ».  Il est également possible de créer des fichiers contenant une suite de commande, qui sont appelés les scripts et peuvent être exécutés. Chapitre 3 : La programmation SHELL 1. Définition

4  Avant l’interprétation des commandes, c’est-à-dire apparition du prompt, le Bourne- Shell exécute deux fichiers d’initialisation: etc/profile et.profile. Le fichier /etc/profile est géré généralement par l’administrateur. Le fichier.profile est géré par l’utilisateur.  Ces fichiers d’initialisation permettent de modifier ou de créer des variables internes au Shell, ou des variables d’environnement, de créer des fonctions, etc. 2. Les fichiers d’initialisation Chapitre 3 : La programmation SHELL

5  Le jeu d’instructions lui-même comporte: Toutes commandes Linux; L’invocation de programmes exécutables (ou de scripts) avec passage de paramètres; Des instructions d’assignation de variables; Des instructions conditionnelles ou itératives; Des instructions d’entrée-sortie. Chapitre 3 : La programmation SHELL 2. Les fichiers d’initialisation

6  Création: un script étant un fichier en mode texte, il doit être crée avec un éditeur de texte.  Exécution: un script doit être exécutable, pour qu’on puisse l’exécuter par son nom.  Presque tous les langages informatiques autorisent d’insérer des commentaires; le Shell n’échappe pas à la règle. Pour cela, il suffit de faire précéder chaque ligne de commentaire du caractère « # ».  Les lignes de commentaire sont tout ignorés par l’interpréteur. Elles sont indispensables pour tout programmeur, car elles lui permettent de « commenter » son programme.  Les lignes blanches ne sont pas interprétées non plus. N’hésitez donc surtout pas à espacer votre script, les lignes blanches ne consomment presque rien en termes d’espace disque, ce n’est pas une ressource rare, et elles facilitent la lecture pour un être humain. 3. Le premier script Chapitre 3 : La programmation SHELL

7  La commande echo sert à afficher un texte. Chaque ligne de texte est écrite sur une ligne à part.  Si vous voulez annuler le retour chariot qui a lieu par défaut à la fin de toute commande echo, il faut utiliser l’option –n.  Pour citer le contenu d’une variable, on ajoute le signe dollar ($) devant son nom  La commande read sert lire les variables. 4. Lecture & écriture Chapitre 3 : La programmation SHELL

8 Exemple1: #!bin/sh #fichier ‘’premier_script ’’ Echo –n ’’Bonjour tout le monde’’ Echo ’’On est en séance du cours programmation SHELL’’ Résultat : Bonjour tout le monde … On est en séance du cours programmation SHELL Exemple 2: #!bin/sh #fichier ‘’mon_script ’’ Echo ‘’écrivez votre nom puis votre prénom’’ Read nom prénom Echo ‘’nom: $nom’’ Echo ‘’prénom: $prénom’’ 4. Lecture & écriture Chapitre 3 : La programmation SHELL

9  On peut faire passer un script un argument lors de l’invocation.  Le nombre de paramètres passés en argument à un script n’est pas limité, toutefois les neufs variables 1, …, 9 permettent de désigner ces paramètres dans le script.  La commande shift permet de faire un décalage de paramètre, ainsi $i sera désigné par $i+1. #/bin/sh #fichier « arg_shift » Echo $1 $2 $3 Shift Echo ‘apres shift’ Echo $1 $2 $3 itri@itri-virtualBox: ~ $ arg_shift 1 2 3 4 1 2 3 Après shift … 2 3 4 itri@itri-virtualBox: ~ $ Exemple: 5. Le passage des paramètres Chapitre 3 : La programmation SHELL

10 6. Les variables spéciales  En plus des variables vues précédemment, le Shell prédéfinit d’autres variables facilitent la programmation: $0Le nom de la commande (i.e: du script) $1, $2, etc Le premier, le deuxième, etc, arguments passés au script $*La liste de tous les arguments passés au script $#Le nombre d’arguments passés au script $?Le code de retour de la dernière commande lancée $!Le numéro de processus de la dernière commande lancée en tâche de fond $$Le numéro de processus du Shell lui-même Chapitre 3 : La programmation SHELL

11 #/bin/sh #fichier « var_sp » Echo $0 a été appelé avec $# paramètres Echo qui sont : $* itri@itri-virtualBox: ~ $ var_sp a b c d Var_sp a été appelé avec 4 paramètres Qui sont : a b c d itri@itri-virtualBox: ~ $ Exemple: Chapitre 3 : La programmation SHELL 6. Les variables spéciales

12 7. Les variables  La liste des variables et leur valeur est obtenue à l’aide de la commande set sans argument. Pour affecter une valeur à une variable on utilise simplement le signe «=» sans espace.  Syntaxe:  La référence d’une variable est obtenue en faisant précéder le nom par $. Ainsi «echo $nom_variable » affichera le contenue. Nom_variable=valeur itri@itri-virtualBox: ~ $ echo $Faculté FPO itri@itri-virtualBox: ~ $ Exemple: Chapitre 3 : La programmation SHELL

13 8. Les variables  Les commandes env ou printenv permettent de visualiser la liste et le contenu des variables d’environnements (set donne la liste de toutes les variables et leur valeur).  La commande unset nom_variable permet de supprimer une variable, sauf les variables PATH, PS1, PS2, MAILCHECK…  Certaines variables ont une signification particulière pour le Bourne-Shell. Les principales seront indiquées ci-dessous par ordre alphabétique. CDPATH: Liste des chemins d’accès utilisés par la commande cd lors d’un changement de répertoire en relatif. HOME: Indique le répertoire d’acceuil, correspond à l’argument par défaut de la commande cd. PATH: Liste des chemins d’accès contenant les commandes. Chaque chemin d’accès est séparé par le caractère « : ». Chapitre 3 : La programmation SHELL

14 PS1: Valeur du premier prompt (par défaut pour cet interpréteur de commandes:$). PS2: Valeur du deuxième prompt (par défaut >). TERM: Définition du type de terminal utilisé (les terminaux connus sur un système sont décrits dans le fichier /etc/termcap ou bien /usr/lib/terminfo). Voici quelques noms de terminaux:  Vt100 pour les terminaux compatibles avec ce type,  Xterm de terminal X,  Hp poste de travail HP. Chapitre 3 : La programmation SHELL 8. Les variables

15 8. Les instructions conditionnelles  Pour la programmation des actions conditionnelles, nous disposons de trois outils: L’instruction if; La commande test qui la complète; L’instruction case. Chapitre 3 : La programmation SHELL

16  L’instruction if: présente trois variantes qui correspondent aux structures sélectives à une, deux ou n alternatives.  La sélection à une alternative: if …. Then …… fi  La sélection à deux alternatives: if …. Then …. Else …. fi  La sélection à n=3 alternatives: if …. Then …. Elif ….. Then …. Else …. If Les commandes 1 ne sont exécutées que si la condition renvoie un code retour nul ($?=0). Chapitre 3 : La programmation SHELL 8. Les instructions conditionnelles

17 If condition 1 Then commandes 1 Elif condition 2 Then commandes 2 …… Elif condition (n-1) Then commandes (n-1) Else Commandes n fi Chapitre 3 : La programmation SHELL 8. Les instructions conditionnelles

18  La commande test: est une opération dont le but est d’évaluer la valeur d’une expression. Cette expression peut être simplement l’existence de quelque chose (par exemple, d’un fichier, ou bien d’une variable), ou peut être une proposition.  Un test renvoie un code de retour. Un code de retour est un nombre (0 ou autre), qui correspond à une réponse de type « vrai » ou « faux ». C’est ce code de retour qui permet la manipulation des tests dans les structures de contrôle comme if, etc.  Le code de retour 0 correspond à la réponse « vrai ». Pour répondre « faux », le programme répond … autre chose (peut être 1, 2, -1 ou autre).  Les expressions peuvent être niées par l’opérateur logique de négation « ! » et combinées par les opérateurs logiques ou « -o » et et logique « -a ». Chapitre 3 : La programmation SHELL 8. Les instructions conditionnelles

19  Les expressions les plus utilisées sont:  Opérateurs arithmétiques: -eq (equal): égal à (signe « =»); -ne (not equal): différent de (signe « ≠ »; -gt (greater than): strictement supérieur à (signe « > »); -it (lesser than): strictement inférieur à (signe « <»); -ge (greater or equal): supérieur ou égal à (signe « ≥ »; -le (lesser ou equal): inférieur ou égal à (signe « ≤ »  Opérateurs sur les fichiers: Nature du fichier: -e (exists): vérifie l’existence d’un fichier; -f (file): vérifie l’existence d’un fichier, et le fait qu’il s’agisse bien d’un fichier au sens strict; -d (directory): vérifie l’existence d’un répertoire; -l (link): vérifie si le fichier est un lien symbolique. Chapitre 3 : La programmation SHELL 8. Les instructions conditionnelles

20  Attributs du fichier: -s (size): vérifie qu’un fichier n’est pas vide.  Droits sur le fichier: - -r (readable): vérifie si un fichier peut être lu; -w (writable): vérifie si un fichier peut être écrit ou modifié; -x (executable): vérifie si un fichier peut être exécuté.  Comparaison des fichiers: -nt (newer than): vérifie si un fichier est plus récent qu’un autre; -ot (older than): vérifie si un fichier est plus ancien qu’un autre. Chapitre 3 : La programmation SHELL 8. Les instructions conditionnelles

21  L’instruction case: est une instruction très puissante et très commode pour faire un choix multiple.  La boucle commence par évaluer la chaîne. Ensuite, elle va lire chaque motif. Enfin, et dès qu’une chaîne correspond au motif, elle exécute les commandes appropriées.  La chaîne peut être lue, passée en paramètre ou être le résultat d’une commande exécutée avec l’opérateur backquote (‘).  Dans les différentes chaînes motif 1 à n, on peut utiliser les caractères spéciaux (*, ?, …). De plus, pour regrouper plusieurs motifs dans une même alternative, en utilisant le caractère « | ». Chapitre 3 : La programmation SHELL 8. Les instructions conditionnelles

22 Case chaine in Motif 1) commandes 1;; Motifs 2) commandes 2;; *) commandes 3;; esac Exemple: #!/bin/sh echo "Entrer une couleur" read C case $C in "vert") echo "Vous pouvez passez" ;; "orange") echo "Soyez prudent" ;; "rouge") echo "Stop, vous ne pouvez pas passer" ;; *) echo "Erreur" ;; esac Chapitre 3 : La programmation SHELL 8. Les instructions conditionnelles

23 9. Les boucles  L’interpréteur de commandes gère trois types de constructions pour les boucles:  Pour les deux premières constructions, le fonctionnement est similaire à la commande if. Pour la boucle for, la variable prendra successivement toutes les valeurs de la liste.  Les commandes break et continue permettent de modifier le fonctionnement des boucles. La commande break est utilisée sous deux formes: Break: sort de la boucle courante; Break n: n étant un entier supérieur à 0, permet de sortir de n boucles imbriquées; continue: permet de passer à l’itération suivante sans exécuter les commandes situées après. Chapitre 3 : La programmation SHELL

24 While condition Do commandes done Until condition Do commandes done For var in liste Do commandes done Chapitre 3 : La programmation SHELL 9. Les boucles

25 10. Les fonctions  Le Shell permet de définir des fonctions appelables par le script. Cette méthodes est plus efficace que d’appeler des scripts externes car la fonction est exécutée dans le même processus.  La syntaxe de définition d’une fonction est:  Et elle est appelée par: Nom_fonction (){ Instruction 1 Instruction 2 … } Nom_fonction [paramètres] Chapitre 3 : La programmation SHELL

26  Les fonctions reçoivent les paramètres d’appel dans les variables $1 à $9 et $*. La valeur de $0 reste inchangée.  Il est possible de déclarer des variables locales à une fonction en utilisant la commande locale avant la déclaration de la variable. Dans ce cas, la modification de la variable locale ne modifie pas une variable globale portant le même nom.  La commande return permet de spécifier le code de retour de la fonction. S’il n’est pas spécifié, la variable $? est initialisée au code de fin de la dernière commande de la fonction.  Le Shell supporte les appels récursifs de fonctions. Comme tout langage récursif, il faut faire très attention aux effets de bord et aux variables non déclarées en local. Chapitre 3 : La programmation SHELL 10. Les fonctions

27 #/bin/sh #je définis une première fonction Ecrire_sur_une_ligne(){ Echo –n$* } #je définis une deuxième fonction qui appelle la première Saluer_utilisateur(){ Ecrire_sur_une_ligne ’’Bonjour ’’ Echo $USER } Chapitre 3 : La programmation SHELL 10. Les fonctions

28 Bon courage et bonne chance à tous Pr. ABDELLAOUI Chapitre 3 : La programmation SHELL


Download ppt "Chapitre 3: La programmation SHELL. Chapitre 3 : La programmation SHELL 1. Définition  Le Shell est plus qu’un interpréteur de commandes: c’est également."

Similar presentations


Ads by Google