Você está na página 1de 34

Branchement Répétition

Stage Informatique

Master MASS - Université de Provence

Clara Bertolissi

Master MASS - Université de Provence Stage Informatique


Branchement Répétition

Plan

Petite introduction à la programmation en shell :


I Variables d’environnement
I les fichiers script
I les structures de branchement
I les structures de répétition
I les tests

Master MASS - Université de Provence Stage Informatique


Branchement Répétition

Variables d’environnement

À chaque instance du shell est associé un environnement dans


lequel sont affectées des variables : celles-ci contiennent une chaı̂ne
de caractères.
I Assignation de variable : variable=valeur
Attention : l’espace est un caractère spécial donc il n’y a pas
d’espace de part et d’autre du signe =
I Consultation de variable : $variable
I Affichage de la variable : echo $variable
I Suppression de variable : unset variable
I Liste des variables définies dans l’environnement : set

Master MASS - Université de Provence Stage Informatique


Branchement Répétition

Exemples

% var=’Le prochain tirage est 2 12 21 27 29 35’


% echo $var
Le prochain tirage est 2 12 21 27 29 35
% X=22
% echo $X
22
% echo Ca coute ${X}0 euros

Master MASS - Université de Provence Stage Informatique


Branchement Répétition

Exemples

% var=’Le prochain tirage est 2 12 21 27 29 35’


% echo $var
Le prochain tirage est 2 12 21 27 29 35
% X=22
% echo $X
22
% echo Ca coute ${X}0 euros
Ca coute 220 euros
% echo Ca coute $X0 euros
Ca coute euros
%
Il n’y a pas de message d’erreur !

Master MASS - Université de Provence Stage Informatique


Branchement Répétition

Variables d’environnement

Voici la liste des variables d’environnement standard :

Variable Description
USER Login de l’utilisateur (ex : toto)
HOME Répertoire principal de l’utilisateur
(ex : /home/toto/)
SHELL Shell utilisé (ex : /bin/bash)
TERM Type du terminal utilisé (ex : xterm)
PATH Liste des répertoires dans lesquels le shell
cherche les commandes

Les autres variables d’environnement ne sont pas standard.

Master MASS - Université de Provence Stage Informatique


Branchement Répétition

Variables d’environnement : PATH

Toute commande Unix tapée au clavier correspond à un


programme qui doit être exécuté.

Comment le système sait où se trouve le programme associé à la


commande ?

Master MASS - Université de Provence Stage Informatique


Branchement Répétition

Variables d’environnement : PATH

Toute commande Unix tapée au clavier correspond à un


programme qui doit être exécuté.

Comment le système sait où se trouve le programme associé à la


commande ?
La variable PATH contient une liste de chemins dans
l’arborescence où le système va chercher les programmes.

Master MASS - Université de Provence Stage Informatique


Branchement Répétition

Variables d’environnement : PATH

Pour savoir où se trouve le programme exécuté on utilise la


commande % which nom-commande.
Exemple :
% which mozilla
% /usr/bin/mozilla
% firefox
% firefox : commande introuvable

Pour exécuter un programme qui n’est pas dans le PATH, il faut donner
son chemin explicitement, ou alors modifier le contenu de la variable
PATH.

Master MASS - Université de Provence Stage Informatique


Branchement Répétition

Rappel sur les variables

À chaque instance du shell est associée un environnement dans


lequel sont affectées des variables : celles-ci contiennent une chaı̂ne
de caractères.
% var=’Le prochain tirage est 2 12 21 27 29 35’
% echo $var
Le prochain tirage est 2 12 21 27 29 35
Le nom d’une variable est une suite de caractères qui ne comporte
que des lettres, des chiffres ou le caractère souligné
En particulier, il ne contient pas les caractères #, %, @, * et : .
Le nom d’une variable ne doit pas commencer par un chiffre.

Master MASS - Université de Provence Stage Informatique


Branchement Répétition

Qu’est-ce qu’un script ?

Un script est un simple fichier texte exécutable (droit x)


commençant par les caractères
# !/bin/bash

Il se compose d’une suite de lignes de textes qui sont des


commandes en shell bash.

Utilité des scripts :


I Automatisation des actions répétitives
I Utilisation de structures de programmation avancées :
variables, paramètres, boucles, tests, etc.
I Scripts d’installation de logiciels (à adapter).

Master MASS - Université de Provence Stage Informatique


Branchement Répétition

Exemple simple

% more PremierScript
# !/bin/bash
echo -n "Aujourd’hui, nous somme le "
date
% chmod a+x PremierScript
% ls -l
total 4
-rwxr-xr-x 1 toto I01 43 oct 10 01 :04 PremierScript

Master MASS - Université de Provence Stage Informatique


Branchement Répétition

Exemple simple

% more PremierScript
# !/bin/bash
echo -n "Aujourd’hui, nous somme le "
date
% chmod a+x PremierScript
% ls -l
total 4
-rwxr-xr-x 1 toto I01 43 oct 10 01 :04 PremierScript
% PremierScript
Aujourd’hui, nous somme le dim oct 10 01 :04 :44 2004

Master MASS - Université de Provence Stage Informatique


Branchement Répétition

Exemple simple

% more PremierScript
# !/bin/bash
echo -n "Aujourd’hui, nous somme le "
date
% chmod a+x PremierScript
% ls -l
total 4
-rwxr-xr-x 1 toto I01 43 oct 10 01 :04 PremierScript
% PremierScript
Aujourd’hui, nous somme le dim oct 10 01 :04 :44 2004
% date
dim oct 10 01 :05 :26 2004

Master MASS - Université de Provence Stage Informatique


Branchement Répétition

Les commentaires

Dans les shellscripts, toutes les lignes qui commencent par un #


sont interpretées comme des commentaires (qui se poursuivent
jusqu’à la fin de la ligne).

% more SecondScript
# !/bin/bash
echo Cette ligne # est tronquée
% SecondScript
Cette ligne

Master MASS - Université de Provence Stage Informatique


Branchement Répétition

Les commentaires

Dans les shellscripts, toutes les lignes qui commencent par un #


sont interpretées comme des commentaires (qui se poursuivent
jusqu’à la fin de la ligne).

% more SecondScript
# !/bin/bash
echo Cette ligne # est tronquée
% SecondScript
Cette ligne
% more SecondScript corrige
# !/bin/bash
echo Cette ligne \# n’est pas tronquée
% SecondScript corrige
Cette ligne # n’est pas tronquée

Master MASS - Université de Provence Stage Informatique


Branchement Répétition

Passage de paramètres à un shell script : $1 à $9

Comme tout programme, on peut passer des paramètres à un


shell script.

Variable Description
$0 Nom du shell script
$1 à $9 Les 9 premiers paramètres
$# Le nombre de paramètres
$* Tous les paramètres passés au shell script
... ...

Master MASS - Université de Provence Stage Informatique


Branchement Répétition

Exemple d’utilisation des paramètres

% more TroisiemeScript
# !/bin/bash
echo ’programme :’ $0
echo ’argument 1 :’ $1
echo ’argument 2 :’ $2
echo ’argument 3 :’ $3
echo "nombre d’arguments :" $#
echo "tous :" $*

Master MASS - Université de Provence Stage Informatique


Branchement Répétition

Exemple d’utilisation des paramètres

% more TroisiemeScript
# !/bin/bash
echo ’programme :’ $0
echo ’argument 1 :’ $1
echo ’argument 2 :’ $2
echo ’argument 3 :’ $3
echo "nombre d’arguments :" $#
echo "tous :" $*
% TroisiemeScript un deux
programme : ./TroisiemeScript
argument 1 : un
argument 2 : deux
argument 3 :
nombre d’arguments : 2
tous : un deux
%

Master MASS - Université de Provence Stage Informatique


Branchement Répétition

Structures de test

Les structures de test permettent d’exécuter des instructions si une


condition est verifiée, et éventuellement d’autres instructions sinon.
if [test]
then
commandes
else
commandes
fi

Master MASS - Université de Provence Stage Informatique


Branchement Répétition

Exemple : structure if

I if [ $JOUR = "mercredi" ]
then
echo "Chouette, cours d’Initiation ce matin !"
else
echo "Dommage, pas de cours aujourd’hui !"
fi
I if [$nombre -eq 27 ] . . .
I if [-w $nom-fichier ] . . .

Master MASS - Université de Provence Stage Informatique


Branchement Répétition

Structure conditionelle

Le script
JOUR=`date +%A`
if [ $JOUR = "mercredi" ]
then
echo "Chouette, cours d’informatique ce matin !"
fi

affichera à l’écran

Chouette, cours d’Initiation ce matin !

uniquement le mercredi.

Master MASS - Université de Provence Stage Informatique


Branchement Répétition

Structure case
Le script
# !/bin/bash
JOUR=‘date +%A‘
case $JOUR in
mercredi) echo "Ce matin, cours d’Informatique !" ; ;
lundi) echo "Ce matin, TP d’informatique !" ; ;
*) echo "Pas d’informatique aujourd’hui" ; ;
esac

affichera

Master MASS - Université de Provence Stage Informatique


Branchement Répétition

Structure case
Le script
# !/bin/bash
JOUR=‘date +%A‘
case $JOUR in
mercredi) echo "Ce matin, cours d’Informatique !" ; ;
lundi) echo "Ce matin, TP d’informatique !" ; ;
*) echo "Pas d’informatique aujourd’hui" ; ;
esac

affichera
I Ce matin, cours d’Initiation ! chaque mercredi
I Ce matin, TP d’informatique ! uniquement le lundi
I Pas d’informatique aujourd’hui les autres jours.

Master MASS - Université de Provence Stage Informatique


Branchement Répétition

Structure de boucles : while, for, until


I La boucle pour :
for variable in liste
do
commandes
done
I La boucle tant que :
while [ test ]
do
commandes
done
I La boucle jusqu’à :
until [ test ]
do
commandes
done

Master MASS - Université de Provence Stage Informatique


Branchement Répétition

Boucles itératives

Les boucles itératives permettent de répéter un nombre fini de fois


une certaine série d’opérations.

for variable in liste


do
commandes
done

Le nombre de répétitions est donné par la variation de la valeur d’une


variable dans une liste de valeurs définis à l’avance.

Master MASS - Université de Provence Stage Informatique


Branchement Répétition

Structure for

Le script
for x in un deux trois quatre
do
echo "La valeur vaut "$x
done

affichera :

Master MASS - Université de Provence Stage Informatique


Branchement Répétition

Structure for

Le script
for x in un deux trois quatre
do
echo "La valeur vaut "$x
done

affichera :
La valeur vaut un
La valeur vaut deux
La valeur vaut trois
La valeur vaut quatre

Master MASS - Université de Provence Stage Informatique


Branchement Répétition

Structure for

% more scriptFOR
# !/bin/bash
echo "nb paramètres="$#
for x in $*
do
echo $x
done
% scriptFOR un deux trois
nb paramètres=3
un deux trois

Master MASS - Université de Provence Stage Informatique


Branchement Répétition

Exemple : boucle for

Pour file dans la liste nom1, nom2, nom3,


copier file dans le répertoire /home/toto

En langage script :

for file in nom1, nom2, nom3 ;


do
cp $file /home/toto/.
done

Master MASS - Université de Provence Stage Informatique


Branchement Répétition

Boucles conditionnelles

Les boucles conditionnelles permettent de répéter une certaine


série d’opérations sous une condition.
I while (tant que) : la boucle tourne tant que le test est verifié
while [ test ]
do
commandes
done
I until (jusqu’à) : la boucle tourne jusqu’à ce que le test soit réalisé
until [ test ]
do
commandes
done

Master MASS - Université de Provence Stage Informatique


Branchement Répétition

Exemple : boucle while

On veut afficher le 100 premiers nombres :


Tant que i est plus petit que 100, afficher la valeur de i.

En langage script :
i=0
while [ $i -lt 100 ]
do
echo $i
i=‘expr $i + 1‘
done

Remarque : il faut modifier la valeur de i à l’intérieur de la structure pour


eviter une boucle infinie.

Master MASS - Université de Provence Stage Informatique


Branchement Répétition

Exemple de until avec read

Le script ScriptTetu attend que l’utilisateur entre ”OK” au


clavier.
# !/bin/bash
until [ "$accord" = "OK" ]
do
echo -n "c’est d’accord ? "
read accord
done

Master MASS - Université de Provence Stage Informatique


Branchement Répétition

Exemple de until avec read

Le script ScriptTetu attend que l’utilisateur entre ”OK” au


clavier.
# !/bin/bash
until [ "$accord" = "OK" ]
do
echo -n "c’est d’accord ? "
read accord
done

Exemple d’exécution :
% ScriptTetu
c’est d’accord ? Non
c’est d’accord ? Ouais
c’est d’accord ? OK
%

Master MASS - Université de Provence Stage Informatique

Você também pode gostar