Scripts shell intro Un script bash est un fichier contenant une suite de commandes shell, exécutables par l'interpréteur (ici le programme /bin/bash),

Slides:



Advertisements
Présentations similaires
Les Structures.
Advertisements

Premier programme en C :
La boucle for : init7.c et init71.c
Formation universitaire à .NET: Introduction à C#
Pour débutant … et autre Raymond Ripp
Création de Pages Web Dynamiques
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Outils de développements
Personal Home Page / Hypertext Processor (PHP)
FLSI602 Génie Informatique et Réseaux
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D., ing. Chapitre 5 Interpréteur de commande, Bourne shell,
Systèmes d'exploitations Les redirections d'entrées/sorties GRARI Mounir ESTO Année 2011.
Les commandes Unix.
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
Langage C Révision.
CPI/BTS 2 Programmation Web Introduction au PHP
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
Les instructions PHP pour l'accès à une base de données MySql
Programmation fonctionnelle Le langage LISP
Introduction au langage PHP Réfs : Chap 3 p 49. Présentation PHP (Hypertext PreProcessor) est un langage de développement Web créé en 1994 par Rasmus.
Le langage ASP Les formulaires avec Request. Les formulaires sont employés pour transmettre des informations saisies par un client à une application Web.
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
Introduction à la programmation I Fonctions Structures de contrôle Structures de données (arrays simples et indexés) Variables locales et globales.
1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 9 Exemples de programmation Bourne shell et nawk(1)
1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 9 Programmation nawk(1)
GPA435, GPA – ÉTS, T. Wong Génie de la production automatisée GPA435 Système dexploitation et programmation de système Chapitre 6 Partie II 2014.
GPA435, GPA – ÉTS, T. Wong Génie de la production automatisée GPA435 Système dexploitation et programmation de système Chapitre 6 Partie I 2014.
Systèmes dexploitation et programmation de systèmes -GPA435- Cours #5: Éléments de programmation (Partie 2) Enseignant: Jean-Philippe Roberge Jean-Philippe.
Systèmes d’exploitation et programmation de systèmes -GPA435- Cours #4: Éléments de programmation (Partie 1) Enseignant: Jean-Philippe.
L3 Module Libre Année universitaire Initiation à la Bioinformatique Jean-Michel RICHER.
Les Opérateurs Ils régissent toutes les opérations ou transformations sur les valeurs des variables. Opérateur d'affectation Opérateurs arithmétiques Opérateurs.
1 GPA435 Systèmes d’exploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D., ing. Chapitre 6 Substitution: variables et commandes,
L’essentiel du langage C
Animateur : Med HAIJOUBI
Utilisation avancée de linux
Javascript 1° PARTIE : LES BASES
PHP & My SQL.
CHAPITRE 4 : Gestion des Utilisateurs et Groupes
Shell Equipe ID Bioinformatics Training Course June 2014.
Algorithmique Les structures Rappel L'enchaînement séquentiel
JavaScript.
SIF-1053 Architecture des ordinateurs
Boucles et Tests For( in ) { } While( ) { } Les exécutions conditionnelles (if.. else) peuvent être évitées avec des indexations logiques. Exemples: y=numeric(length(x));
Boîtes de dialogue sous bash La commande dialog permet d'utiliser onze boîtes de dialogues différentes dans les shell scripts L'historique de cette commande.
Un survol du language C.
 Syntaxe du langage PHP
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Utilisation avancée de linux Réseau Démarrage et arrêt.
Cours n° 3 Traitements en Java
Variables et environnement utilisateur W. Barhoumi.
CSI2520 Un langage de programmation par scripting orienté-objet (et fonctionnel)
1 Système d’exploitation Les scripts csh 1 ère Année Année Tienté HSU.
 Formulaires HTML : traiter les entrées utilisateur
1 PHP 5 Notions fondamentales (niveau 1 – cours #2) Formation continue – Cégep de Sainte-Foy.
Initiation au JavaScript
Introduction au langage C : Structures de contrôle 1 ère année Génie Informatique Dr Daouda Traoré Université de Ségou
1. Spoon Christophe Delagarde, septembre 1998 I.U.T., Université de la Méditerrainée 2.
Copyright © SUPINFO. All rights reserved Scripting BASH Simplification d’administration campus-Booster ID : **XXXXX.
CPI/BTS 2 Programmation Web Fonctions & Includes Prog Web CPI/BTS2 – M. Dravet – 02/11/2003 Dernière modification: 02/11/2003.
Scripts et fonctions Instructions de contrôle
Master 1ère année Sécurité des Systèmes d’Information 1 Programmation en shell.
1 PHP 5 Notions fondamentales (niveau 1 cours #3) Formation continue – Cégep de Sainte-Foy François G Couillard.
Philippe Gandy – 10 novembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Flash MX – Séance 2 Interactions & ActionScript David Rapin Si28 P06.
Master 1ère année Sécurité des Systèmes d’Information 1 Programmation en shell.
BASE DE L’ALGORITHMIE.  Un système d’instructions.  Pour résoudre d’un problème ou d’une classe de problèmes  Recette de cuisine pour faire un gâteau.
O UTILS DE P ROGRAMMATION P OUR LES M ATHÉMATIQUES Mr. BENDIB. I MAA, LAMIS Laboratory, Université Larbi Tébessi - Tébessa.
Transcription de la présentation:

scripts shell intro Un script bash est un fichier contenant une suite de commandes shell, exécutables par l'interpréteur (ici le programme /bin/bash), Dans un script BASH on peut définir des variables et utiliser des structures de contrôle, ce qui lui confère le statut de langage de programmation interprété et complet. Le langage bash gère notamment : la gestion des entrées-sorties et de leur redirection des variables définies par le programmeur et des variables systèmes le passage de paramètres des structures conditionnelles et itératives des fonctions internes

Exemple de script #!/bin/bash echo ---- Bonjour $USER ----- # l'option -n empêche le passage à la ligne # le ; sert de séparateur des commandes sur la ligne echo -n "Nous sommes le " ; date # recherche de $USER en début de ligne dans le fichier passwd # puis extraction de l'uid au 3ème champ, et affichage echo "Ton numéro d'utilisateur est " $(grep "^$USER" /etc/passwd | cut -d: -f3)

Entrées-sorties read read, permet l'affectation directe par lecture de la valeur, saisie sur l'entrée standard au clavier read var1 var2 ... attend la saisie au clavier de deux valeurs pour les affecter, après la validation globale, respectivement aux variables var1et var2 .. exemple echo "Donnez votre prénom et votre nom" read var1 var2 echo "Bonjour $var1 $var2"

Variables programmeur Les variables BASH Variables programmeur syntaxe : variable=valeur chaine=Bonjour à tous echo $chaine

Variables programmeur (2) Opérateur { } dans les variables Quand on est amené à utiliser des noms de variables dans d'autres variables. la présence de { } force l'interprétation des variables incluses. exemple : user="/home/stage" echo $user u1=$user1 echo $u1   --> ce n'est pas le résultat escompté ! u1=${user}1 echo $u1

Variables prédéfinies spéciales gérées par le système ; elles ne sont accessibles qu'en lecture. $? C'est la valeur de sortie de la dernière commande. Elle vaut 0 si la commande s'est déroulée sans pb.  $0 Cette variable contient le nom du script  $1 à $9 Les (éventuels) premiers arguments passés à l'appel du script  $# Le nombre d'arguments passés au script   $* La liste des arguments à partir de $1  $@ liste de tous les arguments séparés par des espaces $$ le n° PID du processus courant  $! le n° PID du processus fils

Variables prédéfinies spéciales La commande shift Il n'y a que 9 paramètres de position de $1 à $9, et s'il y a davantage de paramètres transmis, comment les récupérer ? shift effectue un décalage de +1 dans les variables $ : $1 prend la valeur de $2, etc... La commande set a=1 ; b=2 ; c=3 set a b c echo $1, $2, $3 # les valeurs de a, b, c sont récupérées dans $1, $2, $3

Structures conditionnelles exemple1 if grep "^toto" /etc/passwd > /dev/null then echo "Toto a déjà un compte" fi exemple2 note=17 if [ $note -gt 16 ] ---> test vrai, valeur retournée : 0 then echo "Très bien !"

Conditionnelles imbriquées Exemple toto a t-il fait son devoir lisiblement ? fichier=/home/toto/devoir1.html if [ -f $fichier -a -r $fichier ] then echo "je vais vérifier ton devoir." elif [ ! -e $fichier ] then echo "ton devoir n'existe pas !" else echo "je ne peux pas le lire !" fi

La commande test Tester un fichier Syntaxe : [ option fichier ] Option signification quant au fichier -e il existe? -f c'est un fichier normal? -d c'est un répertoire? -r | -w | -x il est lisible | modifiable | exécutable? -s il n'est pas vide?

Tester un fichier Exemples [ -s $1 ]            vrai (renvoie 0) si le fichier passé en argument n'est pas vide [ -w  fichier ]   le fichier est-il modifiable ? [ -r "/etc/passwd" ] $USER peut-il lire le fichier /etc/passwd ? echo $? --> 0 (vrai) [ -r "/etc/shadow" ] $USER peut-il lire le fichier /etc/shadow ? echo $? --> 1 (faux)

Tester une chaine Syntaxe [ option chaine ] Option signification -z | -n la chaine est vide / n'est pas vide = | != les chaines comparées sont identiques | différentes Exemples [ -n "toto" ] ; echo $? affiche la valeur renvoyée 0 ch="Bonjour" ; [ "$ch" = "bonjour" ] ; echo $? affiche 1 [ $USER != "root" ] && echo "l'utilisateur n'est pas le \"root\" !"

Tester un nombre Syntaxe [ nb1 option nb2 ] Option signification -eq | -ne égal | différent -lt | -gt strict. inf | strict. Sup -le | -ge inf ou égal | sup ou égal Exemples a=15 ; [ "$a" -lt 15 ] ; echo $? => renvoie 1

Opérations dans une commande test Option valeur [ expr1 -a expr2 ] (and) 0 si les 2 expr sont vraies [ expr1 -o expr2 ] (or) 0 si l'une des 2 expr est vraie [ ! expr1 ] négation

Choix multiples case … in Supposons que le script doive réagir différemment selon l'user courant; on va faire plusieurs cas selon la valeur de $USER case $USER in root) echo "Mes respects M le $USER" ;; jean | stage) echo "Salut à $USER" ;; toto) echo "Fais pas le zigo$USER \!" ;; esac

Boucle for Exemple1 for $nom in jean toto stage1 do echo "$nom, à bientôt" done Exemple2 # recopier les fichiers perso. de toto dans /tmp/toto for fich in /home/toto/* do cp $fich tmp/toto Exemple3 # pour construire une liste de fichiers dans $@ cd /home/stagex ; set * ; echo $@ for nom in $@ do echo $nom

Boucle while Syntaxe : while liste-commandes do commandes done Exemple1 : echo -e "Entrez un nom de fichier" read fich while [ -z "$fich" ] do echo -e "Saisie à recommencer"

Boucle while Exemple 2 while echo -e" Entrez un nom de fichier" read fich [ -z "$fich" ] do echo -e "Saisie à recommencer" done Exemple3 # Pour dire bonjour toutes les secondes (arrêt par CTRL-C) while true ; do echo "Bonjour M. $USER" sleep 1

Boucle while Exemple4 Lecture des lignes d'un fichier pour traitement : noter que la redirection de l'entrée de la commande while .. do .. done est placée à la fin fich=/etc/passwd while read ligne do echo $ligne ....... done < $fich

Boucle while Exemple 5 : Boucle de lecture au clavier arrêtée par la saisie de stop #!/bin/bash # syntaxe : lecture.sh texte="" while true do read ligne if [ $ligne = stop ] then break else texte="$texte \n$ligne" fi done echo -e $texte

Exemple 6 :Lecture des lignes d'un fichier Boucle while Exemple 6 :Lecture des lignes d'un fichier fich="/etc/passwd" grep "^stage" $fich | while true do read ligne if [ "$ligne" = "" ] ; then break ; fi echo $ligne done

Sortie et reprise de boucle break placé dans le corps d'une boucle, provoque une sortie définitive de cette boucle. continue permet de sauter les instructions du corps de la boucle (qui suivent continue) et de "continuer" à l'itération suivante. Pour les boucles for, while et until, continue provoque donc la réévaluation immédiate du test de la boucle.