------------------------------------------- -----------------------------------
------------------------------------------- --------------------------------------- Introduction à l’utilisation du système Unix Yahya SLIMANI 32 which gcc Retourne le chemin complet d'accès à la commande gcc who (am i) Retourne le nom des utilisateurs qui ont ouvert une session sur cette machine LA PROGRAMMATION SHELL SOUS UNIX 1. Notions sur la programmation Shell Un shell, quel qu'il soit, peut exécuter des commandes contenues dans un fichier texte (fichier ordinaire). Un fichier contenant des commandes pour le shell est appelé un script. C'est en fait un programme écrit dans le langage du shell. Ce langage comprend non seulement les commandes que nous avons déjà vues (commandes Unix), mais aussi des structures de contrôle (instructions conditionnelles, boucles et d’autres instructions spécifiques). Pour la programmation du shell, nous allons utiliser le shell sh, qui est le plus répandu et standard 2. Créer un script Un script shell est un fichier en mode texte. C'est-à-dire que ce n'est pas un fichier binaire, exécutable directement par la machine, mais il doit être interprété. 3. L'interprétation d'un script L'interprétation signifie que chaque commande contenue dans un script doit être lue par un programme, appelé interpréteur ; l'interpréteur analyse chaque commande du script et l’exécute. 4. L'édition d'un script Un script étant un fichier en mode texte, il doit être créé avec un éditeur de texte, comme par exemple vi. 5. Rendre un script exécutable Pour que le shell sache comment l'interpréter, un script shell doit commencer par la ligne: # !/bin/sh Il doit aussi être exécutable (droit x). Le #!/bin/sh sur la première ligne indique que ce script doit être exécuté par le shell sh dont on indique le chemin d'accès. Pour rendre un fichier exécutable, tapez : chmod u+x nom-fichier-script 6. Spécifier le chemin d'une commande Pour que le shell comprenne où chercher votre commande, il faut donc spécifier l'emplacement de la commande en donnant son chemin, qu'il soit absolu : /home/student/nom-fichier-script ou relatif : ./nom-fichier-script ------------------------------------------- --------------------------------------- Introduction à l’utilisation du système Unix Yahya SLIMANI 33 ou encore sous la forme : sh nom-fichier-script 7. Principes généraux des scripts shell Un script shell est avant tout une succession de commandes, comme celles que nous écrivons dans une fenêtre de type Terminal ; sauf que ces commandes nous les rassemblons dans un fichier pour les exécuter dans l’ordre où elles sont écrites dans le script. 8. Commentaires 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 « # ». Exemple : #!/bin/sh # Tout ce que j'écris ici ne sera pas lu. echo "Ce que je tape ici sera lu." 9. Un script qui parle : la commande echo Maintenant que vous savez comment on peut exécuter un script, il s'agit de le remplir... Commençons par ce qu'il y a de plus simple : afficher du texte, comme par exemple « Ceci est un exemple de fichier script ! » Ecrivez ce fichier script et appelez le script1 #!/bin/sh # Fichier "Exemple" echo " exemple de fichier script !" Exécutez ensuite ce script, en tapant : $ ./script1 exemple de fichier script ! Autre exemple de fichier script (écrivez-le et exécutez-le). #!/bin/sh # Fichier "bonjour" echo "Bonjour... " ------------------------------------------- --------------------------------------- Introduction à l’utilisation du système Unix Yahya SLIMANI 34 echo "Comment allez-vous ?" 10. Annuler le retour chariot 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. Le programme sera alors : #!/bin/sh echo -n "Bonjour..." echo "Comment allez-vous ?" Vous aurez comme résultat : Bonjour... Comment allez-vous ? 11. Lecture de valeurs de variables à partir du clavier : commande read La commande Unix read permet de lire des valeurs à partir du clavier. La commande read doit être suivie d’un nom de variable, non précédé du signe dollar. Cette variable contiendra la valeur introduite à partir du clavier 12. Lire plusieurs variables La commande read permet également de lire plusieurs variables. Il suffit pour cela d'indiquer à la suite les noms des différentes variables. Exemple : #!/bin/sh # Fichier "administration" echo "Écrivez votre nom puis votre prénom :" read nom prenom echo "Nom : $nom" echo "Prénom : $prenom" Vous obtiendrez comme résultat : Écrivez votre nom puis votre prénom : Nom : Tounsi ------------------------------------------- --------------------------------------- Introduction à l’utilisation du système Unix Yahya SLIMANI 35 Prénom : Redha 13. Paramètres de position Les paramètres de position sont des variables spéciales utilisées lors d'un passage de paramètres à un script. Variable Contenu $0 Nom de la commande (du script) $1-9 $1,$2,$3... Les neuf premiers paramètres passés au script $# Nombre total de paramètres passés au script $* Liste de tous les paramètres au format "$1 $2 $3 ..." $@ Liste des paramètres sous forme d'éléments distincts "$1" "$2" "$3" ... 14. Sortie de script La commande exit permet de mettre fin à un script. Par défaut la valeur retournée est 0 (pas d'erreur) 15. Tests de conditions La commande test permet d'effectuer des tests de conditions. Le résultat est récupérable par la variable $? (code retour). Si ce résultat est 0 alors la condition est réalisée. tests sur chaîne • test -z "variable" : zero, retour OK si la variable est vide (ex test -z "$a") • test -n "variable" : non zero, retour OK si la variable n'est pas vide (texte quelconque) • test "variable" = chaîne : OK si les deux chaînes sont identiques • test "variable" != chaîne : OK si les deux chaînes sont différentes tests sur valeurs numériques test valeur1 option valeur2 Option Rôle -eq Equal : Egal -ne Not Equal : Différent ------------------------------------------- --------------------------------------- Introduction à l’utilisation du système Unix Yahya SLIMANI 36 -lt Less than : inférieur -gt Greater than : supérieur -le Less ou equal : inférieur ou égal -ge Greater or equal : supérieur ou égal tests sur les fichiers La syntaxe est test option nom_fichier Option Rôle -f Fichier normal -d Un répertoire -c Fichier en mode caractère -b Fichier en mode bloc -p Tube nommé (named pipe) -r Autorisation en lecture -w Autorisation en écriture -x Autorisation en exécution -s Fichier non vide (au moins un caractère) -e Le fichier existe -L Le fichier est un lien symbolique -u Le fichier existe, SUID-Bit positionné -g Le fichier existe SGID-Bit positionné tests combinés par critères ET OU NON On peut effectuer plusieurs tests avec une seule instruction. Critère Action -a AND, ET logique -o OR, OU logique ------------------------------------------- --------------------------------------- Introduction à l’utilisation du système Unix Yahya SLIMANI 37 ! NOT, NON logique (...) groupement des combinaisons. Les parenthèses doivent être vérouillées \(...\). 16. Instruction if ... then ... else La structure if then else fi 'est une structure de contrôle conditionnelle. If <commandes_condition> then <commandes exécutées si condition réalisée> else <commandes exécutées si dernière condition pas réalisée> fi 17. Choix multiples case La commande case … esac permet de vérifier le contenu d'une variable ou d'un résultat de manière multiple. case Valeur in Modele1) Commandes ;; Modele2) Commandes ;; *) action_defaut ;; esac Le modèle est soit un simple texte, soit composé de caractères spéciaux. Chaque bloc de commandes lié au modèle doit se terminer par deux points-virgules. Dès que le modèle est vérifié, le bloc de commandes correspondant est exécuté. L'étoile en dernière position (chaîne variable) est l'action par défaut si aucun critère n'est vérifié. Caractère Rôle * Chaîne variable (même vide) ? Un seul caractère [...] Une plage de caractères [!...] Négation de la plage de caractères | OU logique 18. Les boucles Elles permettent la répétition d'un bloc de commandes soit un nombre limité de fois, soit conditionnellement. Toutes les commandes à exécuter dans une boucle se placent entre les commandes do et done. ------------------------------------------- --------------------------------------- Introduction à l’utilisation du système Unix Yahya SLIMANI 38 Boucle for La boucle for ne se base pas sur une quelconque incrémentation de valeur mais sur une liste de valeurs, de fichiers ... for var in liste do commandes à exécuter done La liste représente un certain nombre d'éléments qui seront successivement attribuées à var. Si on ne précise aucune liste à for, alors c'est la liste des paramètres soumise au script qui sera utilisée. for params do echo "$params" done Boucle while La commande while permet une boucle conditionnelle « tant que ». Tant que la condition est réalisée, le bloc de commande est exécuté. On sort si la condition n'est plus valable. while condition do commandes done ou while bloc d'instructions formant la condition do commandes done Boucle until La commande until permet une boucle conditionnelle « jusqu'à ». Dès que la condition est réalisée, on sort de la boucle. until condition do commandes done ou until bloc d'instructions formant la condition do commandes done uploads/Industriel/ cours-script.pdf
Documents similaires
-
16
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Dec 26, 2021
- Catégorie Industry / Industr...
- Langue French
- Taille du fichier 0.0439MB