Introduction Variables Instructions. Création de scripts. Jean-Baptiste Vioix LE2I - ENESAD.

Documents pareils
Environnements informatiques

STAGE IREM 0- Premiers pas en Python

Initiation à la programmation en Python

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

1. Structure d'un programme FORTRAN 95

SERVEUR DE SAUVEGARDE POUR BCDI3. par. G.Haberer, A.Peuch, P.Saadé


Organigramme / Algorigramme Dossier élève 1 SI

Corrigé des TD 1 à 5

Algorithmique et Programmation, IMA

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

TD3: tableaux avancées, première classe et chaînes

INF 321 : mémento de la syntaxe de Java

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Perl Orienté Objet BioPerl There is more than one way to do it

Cours Informatique Master STEP

Cours d algorithmique pour la classe de 2nde

Pharmed. gestion de pharmacie hospitalière. Installation / déploiement

TP 1. Prise en main du langage Python

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Java Licence Professionnelle CISII,

Programmation C++ (débutant)/instructions for, while et do...while

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Python Les fondamentaux du langage

Notions fondamentales du langage C# Version 1.0

Programmer en JAVA. par Tama

ACTIVITÉ DE PROGRAMMATION

V- Manipulations de nombres en binaire

TP1 - Prise en main de l environnement Unix.

OCL - Object Constraint Language

Recherche dans un tableau

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle.

Découverte de Python

Programmation système en C/C++

Algorithmique et programmation : les bases (VBA) Corrigé

Présentation du langage et premières fonctions

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Calcul Formel et Numérique, Partie I

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Introduction aux Systèmes et aux Réseaux

Principe, applications et limites

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Représentation d un entier en base b

Bases de programmation. Cours 5. Structurer les données

INTRODUCTION A JAVA. Fichier en langage machine Exécutable


Principes des langages de programmation INF 321. Eric Goubault

1 Description générale de VISFIELD

Exonet : sauvegarde automatisée d une base de données

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

LES TYPES DE DONNÉES DU LANGAGE PASCAL

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

BTS S.I.O PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

Introduction au langage C

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Langage Java. Classe de première SI

Résolution de systèmes linéaires par des méthodes directes

Enseignement secondaire technique

Plan du cours. Historique du langage Nouveautés de Java 7

Premiers Pas en Programmation Objet : les Classes et les Objets

Programme awk------introduction rapide

Introduction à l algorithmique et à la programmation M1102 CM n 3

Initiation à LabView : Les exemples d applications :

1 Recherche en table par balayage

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

TP 1 Prise en main de l environnement Unix

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Programmation en langage C

PowerShell. Référence. Windows. Tyson Kopczynski. Réseaux et télécom. Programmation. Génie logiciel. Sécurité. Système d exploitation

Table des matières Avant-propos... V Scripting Windows, pour quoi faire?... 1 Dans quel contexte?

Unix/Linux I. 1 ere année DUT. Université marne la vallée

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

4. Groupement d objets

TP Service HTTP Serveur Apache Linux Debian

Gnuplot. Chapitre Lancer Gnuplot. 3.2 Options des graphes

EPREUVE PRATIQUE DES TECHNIQUES INFORMATIQUES ACTIVITE N 1. Thème de l activité : Configuration d un firewall

Introduction à MATLAB R

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

Utilisation d objets : String et ArrayList

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Nous avons utilisé plusieurs Script :

Conventions d écriture et outils de mise au point

Première partie. Qu est-ce qu un script?

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Mysql avec EasyPhp. 1 er mars 2006

1 Lecture de fichiers

Reproductibilité des expériences de l article "Analyse et réduction du chemin critique dans l exécution d une application"

TP : Shell Scripts. 1 Remarque générale. 2 Mise en jambe. 3 Avec des si. Systèmes et scripts

Claude Delannoy. 3 e édition C++

Introduction à l Administration Systèmes et Réseaux

Transcription:

Création de scripts Jean-Baptiste Vioix (jb.vioix@free.fr) LE2I - ENESAD http://jb.vioix.free.fr 1-27

Introduction à la création de script Diverses opérations nécessitent de nombreuses commandes répétitives. Pour éviter une saisie fastidieuse, on les regroupe dans des fichiers qui seront interprétés par le shell. Ces scripts peuvent accepter des paramètres lors du lancement afin de modifier le résultat. Les scripts sont des fichiers textes qui peuvent être éxécutés. La première ligne contient #!/bin/bash pour indiquer que l interpréteur est bash. Les commentaires sont précédées de # http://jb.vioix.free.fr 2-27

Définitions Prédéfinies Tableaux Définition et accès L utilisateur peut définir des variables à l aide du symbole = Pour accéder au contenu d une variable, on fait précéder son nom de $ Exemple : [iqs@pc]$ val=5 [iqs@pc]$ echo val val [iqs@pc]$ echo $val 5 Le symbole = est un symbole d affectation ( On affecte la valeur 5 à val ). http://jb.vioix.free.fr 3-27

Définitions Prédéfinies Tableaux prédéfinies Pour faciliter la création de scripts, un certain nombre de variables sont prédéfinies. Les paramètres sont référencés par les variables 1, 2,... (on y accède avec $1, $2,...) La variable * contient la liste des paramètres d appel (on y accède avec $*). La variable # contient le nombre de paramètres d appel (on y accède avec $#). La variable? (accès $?) contient le code de retour de la dernière commande (0 pour un succès, sinon un autre chiffre). http://jb.vioix.free.fr 4-27

Définitions Prédéfinies Tableaux Tableaux bash permet de définir des variables de type tableau On ne peut définir que des tableaux mono-dimensionnels de chaînes de caractères (mots). Les éléments sont séparés par des espaces. Le premier élément a l indice 0. http://jb.vioix.free.fr 5-27

Définitions Prédéfinies Tableaux Tableaux Pour remplir un tableau avec une liste de mots, on les encadre des (). On peut aussi utiliser le résultat d une commande. TabMots=(une liste de mots) TabLs= ( ls ) Pour accéder au contenu d une case, on doit utiliser $ comme pour une variable, mais il doit être protégé par { }. [iqs@pc]$ echo ${TabMots[1]} liste L ensemble des éléments est désigné par * : [iqs@pc]$ echo ${TabMots[*]} une liste de mots Le nombre d éléments est accessible avec # : [iqs@pc]$ echo ${#TabMots[*]} 4 http://jb.vioix.free.fr 6-27

conditionnelles itératives Des opérations arithmétiques peuvent être effectuées sur les variables. On utilise la commande expr. [iqs@pc]$ expr 1 + 2 3 Les opérations possibles sont : Addition et soustraction : $a + $b et $a - $b Produit : $a \* $b Quotient : $a / $b Modulo : $a % $b http://jb.vioix.free.fr 7-27

conditionnelles itératives Tests La commande test permet d effectuer des tests booléen sur des variables. La syntaxe est la suivante test expression ou [ expression ], test renvoie 0 si le résultat est vrai, 1 sinon. http://jb.vioix.free.fr 8-27

conditionnelles itératives Tests sur les valeurs entières Les principaux tests sur des valeurs entières sont : a -eq b retourne vrai si a=b. a -ne b retourne vrai si a b. a -ge b retourne vrai si a b. a -gt b retourne vrai si a>b. a -le b retourne vrai si a b. a -lt b retourne vrai si a<b. http://jb.vioix.free.fr 9-27

conditionnelles itératives Tests sur les chaînes de caractères Les principaux tests sur des chaînes de caractères sont : str1 = str2 retourne vrai si str1 et str2 sont identiques. str1!= str2 retourne vrai si str1 est différente de str2. str retourne vrai si str n est pas nulle. -n str retourne vrai si la longueur de str est supérieure à zéro. -z str retourne vrai si la longueur de str est égale à zéro. http://jb.vioix.free.fr 10-27

conditionnelles itératives Tests sur les fichiers Les principaux tests sur les fichiers sont : -d fic retourne vrai si fic est un répertoire. -f fic retourne vrai si fic est un fichier. -r fic retourne vrai si fic peut être lu. -w fic retourne vrai si fic peut être écrit. -x fic retourne vrai si fic peut être exécuté. -s fic retourne vrai si la taille de fic est non nulle. http://jb.vioix.free.fr 11-27

conditionnelles itératives Alternatives simples L alternative la plus simple est de la forme : si...alors...sinon La syntaxe est la suivante : if <ListeDeCommandes1>; then <ListeDeCommandes2> else <ListeDeCommandes3> fi La <ListeDeCommandes2> est exécutée si <ListeDeCommandes1> (souvent un test) renvoie 0, sinon c est la <ListeDeCommandes3> qui est exécutée. http://jb.vioix.free.fr 12-27

conditionnelles itératives Alternatives simples Une commande UNIX réussie renvoie 0 ; si elle échoue, elle renvoie 1. On peut omettre la seconde partie de l alternative. On peut quitter un script à l aide de la commande exit <n>, où <n> est un chiffre. Généralement, on suit les conventions ci-dessus. http://jb.vioix.free.fr 13-27

conditionnelles itératives Alternatives simples Plusieurs alternatives peuvent être groupées : if <ListeDeCommandes1>; then <ListeDeCommandes2> else if <ListeDeCommandes3>; then <ListeDeCommandes4> else if <ListeDeCommandes5>; then <ListeDeCommandes6>... fi fi fi http://jb.vioix.free.fr 14-27

conditionnelles itératives Alternatives simples Cette notation se simplifie à l aide de la syntaxe suivante : if <ListeDeCommandes1>; then <ListeDeCommandes2> elif <ListeDeCommandes3>; then <ListeDeCommandes4> elif <ListeDeCommandes5>; then <ListeDeCommandes6> fi http://jb.vioix.free.fr 15-27

conditionnelles itératives Choix multiples Lorsque le choix correspond à plusieurs alternatives, l instruction case permet de créer des choix d une manière plus simple que la structure précédente. case <str> in <str1>)) <ListeDeCommandes1>;; <str2>)) <ListeDeCommandes2>;;... *)) <ListeDeCommandesD>;; esac http://jb.vioix.free.fr 16-27

conditionnelles itératives Choix multiples Si la chaine <str> correspond à la chaine <str1>, on exécute la <ListeDeCommandes1>. Si la chaine <str> correspond à la chaine <str2>, on exécute la <ListeDeCommandes2>, etc... Dans les autres cas, la <ListeDeCommandesD> est exécuté. Les chaines <str1>... peuvent être des expressions régulières. http://jb.vioix.free.fr 17-27

conditionnelles itératives Exemples Teste si la variable val (qui vaut 10) est supérieure à 5. #!/bin/bash val=10 if [ $val -ge 5 ]; then echo "Valeur supérieure à 5" else echo "Valeur inférieure à 5" fi Usage : test ou./test http://jb.vioix.free.fr 18-27

conditionnelles itératives Exemples Teste si la variable passée en paramètre est supérieure à 5. #!/bin/bash if [ $1 -ge 5 ]; then echo "Valeur supérieure à 5" else echo "Valeur inférieure à 5" fi Usage : test 5 ou./test 5 http://jb.vioix.free.fr 19-27

conditionnelles itératives Exemples Teste si la variable passée en paramètre existe et si elle est supérieure à 5. #!/bin/bash if [ $# -ne 1 ]; then echo "usage : $0 valeur "; exit 1; fi if [ $1 -ge 5 ]; then echo "Valeur supérieure à 5" else echo "Valeur inférieure à 5" fi http://jb.vioix.free.fr 20-27

conditionnelles itératives itératives Le langage de script permet de répéter un bloc d instructions. Les instructions sont comprises entre les instructions do et done. Deux cas se présentent : le nombre de répétitions est fixé avant l exécution OU le nombre de répétitions est fixé par une condition (d arrêt ou de répétition). http://jb.vioix.free.fr 21-27

conditionnelles itératives itératives L instruction for permet de répéter le bloc d instruction pour un nombre fini d éléments : for <variable> in <list> do <instructions> done La liste peut avoir différentes syntaxes : Liste exhaustive : 1 2 3 4 5 Variable, par exemple pour tous les arguments : $* Tableau : ${tab[*]} Résultats d une commande : ls http://jb.vioix.free.fr 22-27

conditionnelles itératives itératives Deux fonctions permettent de construire des boucles non bornées. La fonction while permet de répéter un bloc d instruction tant que le test est VRAI : while <test> do <instructions> done La fonction until permet de répéter un bloc d instruction jusqu à ce que le test soit VRAI : until <test> do <instructions> done http://jb.vioix.free.fr 23-27

conditionnelles itératives Exemples Décompte de 9 à 0 avec une boucle for #!/bin/bash for val in 9 8 7 6 5 4 3 2 1 0 do echo $val done http://jb.vioix.free.fr 24-27

conditionnelles itératives Exemples Décompte de 9 à 0 avec une boucle while #!/bin/bash val=10 while [ $val -ne 0 ] do val= expr $val - 1 echo $val done http://jb.vioix.free.fr 25-27

conditionnelles itératives Exemples Décompte de 9 à 0 avec une boucle until #!/bin/bash val=10 until [ $val -eq 0 ] do val= expr $val - 1 echo $val done http://jb.vioix.free.fr 26-27

conditionnelles itératives Récursivité Un script shell peut s appeler lui-même. Comme pour tous les appels récursifs, on doit veiller à prévoir une condition d arrêt de la récursivité. http://jb.vioix.free.fr 27-27