Post on 12-Apr-2017
Programmation Shell Script
Présenter par : NOUR, MESSEL
Université Djilali Liabes de Sidi Bel Abbès
Présenter par : NOUR, MESSEL Programmation Shell Script
Un script Bash est un �chier de type texte contenant une suitede commandes SHELL, exécutable par l'interpréteur (parexemple /bin/bash),comme une commande unique. Un scriptpeut etre lancé en ligne de commande (Terminal), commedans un autre script.
Il s'agit pas uniquement d'un simple enchainement decommande : on peut dé�nir des variables et utiliser desstructures de controle, ce qui lui confère le statut de langagede programmation interprété et complet.
Le langage Bash gère notamment :
Les entrées-sorties et leur redirectionLes variables (système, environnement et usager)Le passage de paramètresLes structures conditionnelles et itérativesLes fonctions internes
Présenter par : NOUR, MESSEL Programmation Shell Script
Alors ?
Comment crèer, exècuter un script SHELL ?
Quelle est la syntaxe génerale de la programmation SHELL ?
Pourqoui on doit avoir à programmer en SHELL, malgrèl'existance d'autres languages (C, Java, Python...) ?
Présenter par : NOUR, MESSEL Programmation Shell Script
Le script débute généralement par l'indication de soninterpréteur écrite sur la première ligneLes lignes commençant par le caractère # sont descommentaires
figures/code_01.png
Présenter par : NOUR, MESSEL Programmation Shell Script
Il est indispensable que le �chier script ait la permission x (soitexécutable) : chmod u+x bonjour
Pour lancer l'exécution du script, taper : ./bonjour
./ indiquant le chemain, ici le répertoire courant. Ou bienindiquer le chemain absolu à partir de la racine. Ceci dans lecas où le répertoire contenant le script n'est pas inclus dans lePATH
Présenter par : NOUR, MESSEL Programmation Shell Script
Exécution en mode "trace" (-x) et en mode "verbose" (-v) : sh-x ./bonjour pour aider à la mise au point d'un script, on peutinsérer des lignes temporaires.
echo $var : pour a�cher la valeur de la variable
exit 1 : pour forcer l'ârret du script à cet endroit
On peut passer des arguments à la suite du nom du script,séparés par des espaces. Les valeurs de ces paramètres sontrécupérables dans le script grâce aux paramétres de position$1, $2, ... mais , contrairement aux langages deprogrammation classiques, ils ne peuvent pas être modi�és.
Présenter par : NOUR, MESSEL Programmation Shell Script
Présenter par : NOUR, MESSEL Programmation Shell Script
Ce sont les voies de communication entre le programme Bash et laconsole :
echo : a�che son argument texte entre guillement sur la sortiestandard. La validation d'une commande echo provoque unsaut de ligne.
On peut insérer les caractères spéciaux habituels, qui serontinterprétés seulement si l'option -e suit echo
\n : saut ligne\b : retourn arrière\t : tabulation\a : alarme\c : �n sans saut de ligne
echo -e "Bonjour \n a toutes \n et a tous"
Présenter par : NOUR, MESSEL Programmation Shell Script
read : permet l'a�ectation directe par lecture de la valeur, saisiesur l'entrée standard au clavier
read var1 var2 ... : attend la saisie au clavier d'une liste de valeurspour les a�ecter, après la validation globale, respectivementaux variables var1, var2, ...
Présenter par : NOUR, MESSEL Programmation Shell Script
Syntaxe : variable=valeur
Le signe "=" NE DOIT PAS etre entourné d'espace(s)
On peut initialiser une variable à une chaine vide : chaineVide=
Si valeur est une chaine avec des espaces ou des caractèresspéciax, l'entourner de " " ou de ' '
Le caractére \permet de masquer le sens d'un caractère spécialcomme " ou ' faire précéder le nom de la variable du signe$pour faire référence à sa valeur
Pour a�cher toutes les variables : set
Pour empêcher la modi�cation d'une variable : readonly pi=3.14
Présenter par : NOUR, MESSEL Programmation Shell Script
Toute variable est dé�nie dans un Shell. Pour qu'elle devienneglobale elle doit etre exportée par la commande export
Présenter par : NOUR, MESSEL Programmation Shell Script
La liste des variables d'environnement est accessible par lacommande : env, les plus utiles sont $HOME, $PATH, $USER,$PS1, $SHELL, $ENV, $PWD, ...
La commande echo permet d'obtenir la valeur d'une tellevariable : echo $USER
Présenter par : NOUR, MESSEL Programmation Shell Script
Elles sont gérés par le système et s'avèrent très utiles dans lesscripts. Bien entendu, elles ne sont accessibles qu'en lecture
$ ? : C'est la valeur de sortie de la dernière commande
$ 0 : Cette variable contient le nom du script $ 1 à $ 9 : Lesparamètres passés à l'appel du script
$ ∗ : La liste des paramètres à partir de $1
$ $ : Le PID du processus courant
$ ! : Le PID du processus �ls
Présenter par : NOUR, MESSEL Programmation Shell Script
Attention : si then est placé sur la 1ère ligne, séparer avec ;if commande ; then ... �
Exemple : On teste la présence d'une ligne commençant par polodans /etc/passwd
Présenter par : NOUR, MESSEL Programmation Shell Script
Présenter par : NOUR, MESSEL Programmation Shell Script
Exemple : Supposons que le script doit réagir di�éremment selonla valeur de $USER
Présenter par : NOUR, MESSEL Programmation Shell Script
Exemple : Recopier les �chiers personnels de root dans /tmp
Présenter par : NOUR, MESSEL Programmation Shell Script
La répétition se poursuit TANT QUE la dernière commande de laliste est vraie
Présenter par : NOUR, MESSEL Programmation Shell Script
Sont des suites des instructions (soit fonctions/procédures) :
Présenter par : NOUR, MESSEL Programmation Shell Script
Projet
Fedora Post Installation : Bash script qui permet de faciliterl'installation des programmes sous Fedora, et appliquer descon�gurations sur le système.Lien : https ://github.com/boubakr92/fedora-post-installation/Info : Des contributeurs... BIENVENUE :)
Démonstration
Tâches : Programmer des scripts pour resoudre des problemes !
Présenter par : NOUR, MESSEL Programmation Shell Script
Merci...Vos Questions
Présenter par : NOUR, MESSEL Programmation Shell Script