C.M. 5 : Programmation Bash

Documents pareils
Environnements informatiques

C.M. 1 & 2 : Prise en main de Linux

Cours Informatique Master STEP

INF 321 : mémento de la syntaxe de Java

Corrigé des TD 1 à 5

1. Structure d'un programme FORTRAN 95

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)

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

STAGE IREM 0- Premiers pas en Python

Programmation C. Apprendre à développer des programmes simples dans le langage C

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

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

Initiation à la programmation en Python

Algorithmique et Programmation, IMA

La mémoire. Un ordinateur. L'octet. Le bit

Programmation en Caml pour Débutants

Initiation à l algorithmique


Cours d algorithmique pour la classe de 2nde

Introduction à MATLAB R

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

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Introduction au langage C

TP1 - Prise en main de l environnement Unix.

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

sshgate Patrick Guiran Chef de projet support

IFT Systèmes d exploitation - TP n 1-20%

Examen Médian - 1 heure 30

PRESENTATION RESSOURCES. Christian Dupaty BTS Systèmes Numériques Lycée Fourcade Gardanne Académie d Aix Marseille

Programmation système I Les entrées/sorties

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

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

Python Les fondamentaux du langage

Introduction aux Systèmes et aux Réseaux

Outils pour la pratique

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

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

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

TP 1 Prise en main de l environnement Unix

Guide d'installation de la base de données ORACLE 10g ( ) pour linux FEDORA CORE 4.

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

Découverte de Python

Représentation d un entier en base b

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

Organigramme / Algorigramme Dossier élève 1 SI

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

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Algorithmes récursifs

V- Manipulations de nombres en binaire

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

Licence Sciences et Technologies Examen janvier 2010

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

Principe, applications et limites

ACTIVITÉ DE PROGRAMMATION

Bon ben voilà c est fait!

Aide-Mémoire unix. 9 février 2009

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2

Année Cours Unix-Shell. par. Karam ALLALI. Ecole Spéciale d Informatique

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Introduction à l Administration Systèmes et Réseaux

GUIDE PRATIQUE déplacements professionnels temporaires en France et à l étranger

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

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

TP 1. Prise en main du langage Python

Java Licence Professionnelle CISII,

Cours Informatique 1. Monsieur SADOUNI Salheddine

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

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

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Choisir le mode d envoi souhaité. Option 1 : Envoyer un SMS à un nombre réduit de numéros (0 10 )

Programmer en JAVA. par Tama

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

Création de maquette web

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

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

as Architecture des Systèmes d Information

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

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

R, Bonnes pratiques. Christophe Genolini

Rappels Entrées -Sorties

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

1 Lecture de fichiers

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

Powershell. Sommaire. 1) Étude du cahier des charges 2) Veille technologique 3) Administration sur site 4) Automatisation des tâches d administration

Cours 1 : Qu est-ce que la programmation?

Ordonnancement temps réel

Initiation à Excel. Frédéric Gava (MCF)

Logiciel Libre Cours 2 Fondements: Programmation

Enseignement secondaire technique

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Solutions du chapitre 4

Cours 1 : La compilation

Cours 7 : Utilisation de modules sous python

Programmation en langage C

Tutoriel Création d une source Cydia et compilation des packages sous Linux

PHP 5.4 Développez un site web dynamique et interactif

Transcription:

Grégory Bonnet gregory.bonnet@unicaen.fr GREYC Université Caen Basse Normandie Diaporama original : Jean-Philippe Métivier Boris Lesner

Un script bash? script bash = une suite d instructions dans le langage utilisé par les terminaux = un petit programme utilisant les instructions et commandes des terminaux hello.sh!/bin/bash Pour exécuter un script bash : echo "Hello World!" soit on donne les droits d exécution au script et on l exécute de la manière suivante./hello.sh ; soit on le lance grâce à l interpréteur bash de la manière suivante sh hello.sh.

Les variables Une variable permet de stocker une valeur et peut être utilisée pour désigner cette valeur. Le nom d une variable est une chaîne de alphanumérique : une chaîne de caractères commençant par au moins une lettre puis une suite de lettres ou de chiffres. Deux opérations peuvent être effectuées : 1 donner une valeur (affectation) : nom variable=valeur 2 lire le contenu d une variable : $nom variable hello2.sh!/bin/bash nom="john Doe" echo "Hello $nom!"

Les variables d environnement Certaines variables sont utilisées par le système : elles sont appelées des variables d environnement : $USER et $UID : donne le login et l identifiant de l utilisateur connecté $HOME et $PWD : donne le chemin absolu des répertoires home et courant de l utilisateur connecté... On peut lister les variables d environnement utilisées par le système grâce à la commande env et en ajouter temporairement grâce à export.

Les valeurs passées en arguments On peut passer des valeurs en argument à un script (exactement comme pour une commande). jdoe@trantor : $ sh script.sh argument1 argument2 $0 le nom du script exécuté ${i} le i ieme argument $ le nombre d arguments $* une chaine de caractères de tous les arguments $? code de retour d un programme La fonction shift permet de décaler les arguments d un rang vers la gauche : le deuxième devient le premier, le troisième le deuxième et ainsi de suite. N.B. shift n de même que shift mais avec un décalage de n.

À vous de jouer Écrire un script saluant l utilisateur avec son nom et lui donnant la date : en utilisant la variable d environnement stockant le login ; en utilisant une valeur passée en argument. Écrire un script affichant le nom du script, le nombre d arguments et la liste des arguments.

Évaluer une expression On peut effectuer des opérations arithmétiques : + la somme - la soustraction * la mutilplication / la division (en nombre entier) Pour évaluer une opération, on utilise : $((operation)) operation.sh valeur1=5 valeur2=3 chaine=$valeur1+$valeur2-1 resultat=$(($valeur1+$valeur2-1)) echo "L operation $chaine a pour resultat $resultat"

Évaluer une expression Comparer des chaînes de caractères : égalité =... différence!= Comparer des entiers : égalité -eq différence -ne plus petit -lt plus grand -gt pp ou égale -le... pg ou égale -ge test valeur op valeur [ valeur op valeur ] N.B. : les espaces sont importants.

Branchement conditionnel : if if (si en anglais) est une structure qui permet d exécuter une suite d instructions si un test est verifié. Exemple : if condition...then instruction fi if test "$1" -lt 10...then le premier argument est inférieur a 10 fi

Branchement conditionnel : if On peut ajouter le bloc optionnel else pour exécuter des instructions en cas où le test serait faux. Exemple : if condition...then instruction OK...else instruction KO fi if [ "$1" = "pass" ]...then echo "le mot pass"...else echo "pas le mot pass" fi

À vous de jouer Écrire un script qui calcule pour deux nombres passés en arguments leur somme et leur produit. Écrire un script qui vérifie si le login donné en entrée est celui de la personne connectée au terminal. Écrire une petite calculatrice qui prend en entrée le premier nombre puis l operateur et le second nombre, et qui affiche l opération et son résultat.

Conditions multiples On peut écrire des tests liés par et en utilisant -a : if [ "$jour" = 11 -a "$mois" = novembre ]...then echo "jour ferie" fi On peut écrire des tests liés par ou en utilisant -o : if [ "$we" = 1 -o "$ferie" = 1 -o $vacances = 1 ]...then echo "repos" fi Ou la négation de la condition (!) : if [! $1 -lt 5 ]...then echo "superieur ou egal a 5" fi

Boucle conditionnelle : while L instruction while (tant que en anglais) permet d exécuter des instructions tant qu un test est verifié : while condition ; do... instruction done Exemple : un while qui compte des moutons. i=0 while [ $i -le $1 ]; do... echo $i moutons... i=$(($+1)) done

Itération : for L instruction for (pour en anglais) permet d exécuter des instructions sur chaque élement d une liste : Exemple : for variable in liste ; do... instruction done for f in 1 2 3 4; do echo $f done for f in seq 1 4 ; do echo $f done for f in $(ls); do cat $f done

À vous de jouer Écrire un script retournant la factorielle de la valeur passée en entrée (rappel : factoriel(5)= 1 2 3 4 5) Écrire un script dessinant un carré de côté n. * *** dessine rectangle(3) *** *** De même avec un triangle rectangle isocèle de côté n. * * dessine triangle(3) ** ***

Fonctionnalités diverses La fonction read permet de lire une entrée clavier. jdoe@trantor: $ read x 50 jdoe@trantor: $ echo $x 50 La variable $RANDOM retourne un nombre aléatoire. Pour que le nombre soit compris entre 0 et n (non inclus) on peut utiliser le modulo (%). echo Un nombre entre 1 et 10 : $(($RANDOM%10+1))

À vous de jouer Le calcul mental : écrire un petit jeu de calcul mental en proposant deux nombres (entre 1 et 10) et un operateur (+ ou *) et qui attend la réponse du joueur. Une fois la réponse donnée le script vérifie le résultat s il est bon. La basse-cour : tant que la valeur passé en argument n est pas atteinte, on tire un nombre aléatoire entre 0 et 3 et on ajoute un animal dans la basse-cour (si c est un 0 il s agit d un mouton, pour 1 d un cochon, 2 d une poule et 3 un vache). Après avoir fait l ajout à la basse-cour de l animal, le script affiche le nombre de fois que chacun des animaux est présent dans la basse cour.

case Plutôt qu enchaîner les if, on peut utiliser un case : Exemple : case "$variable" in... motif1) instruction1 ;;... motif2) instruction2 ;;... *) instruction ;; esac for f in $(ls); do...case "$f" in...*.temp ) rm $f ;;...*.css ) mv $f style;; esac

À vous de jouer La basse-cour : réécrire basse-cour avec un case plutot qu un if.

Test sur les fichiers Il existe des tests particuliers pour les fichiers -e le fichier existe? -d le repetoire existe? -f le fichier regulier existe? -r le fichier possède les droits de lecture? -w le fichier possède les droits d écriture? -x le fichier possède les droits d exécution? Exemple : for f in $(ls); do... if [ -f $f -a -x $f ]...... then echo $f... fi done

Écrire des fonctions Un fonction permet de factoriser un morceau de code qui sera souvent appelé. function nom fonction () { commande } Les arguments de la fonction n ont pas besoin d être spécifiés lors de sa définition et sont accessibles grâce à $1,...

Écrire des fonctions factoriel.sh #!/bin/bash function factorielle () { res=1 for i in seq 1 $1 ; do res=$(($res*$i)) done echo $res } factorielle 1 factorielle 10