Vous êtes sur la page 1sur 14

Petit tutoriel de programmation shell (bash)

 

Fred´ eric´

Guinand

Annee´

Speciale´

- IUT du Havre

1

Table des matieres`

1 Variables

3

1.0.1

Un petit exemple

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

3

1.0.2

Variables internes

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

3

1.0.3

Variables definies´

par l’utilisateur

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

3

1.0.4

Utilisation des quotes

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

4

1.1

Exemples complementaires´

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

5

2 Arguments ligne de commande

 

6

3 Evaluation d’expressions arithmetiques´

 

6

3.1

Commandes et operateurs´

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

6

3.2

Exemple

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

7

3.3

Commande expr

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

7

4 Structures de controleˆ

conditionnelles

 

7

4.1 Syntaxe

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

7

4.2 Exemple

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

8

5 Operateurs´

de comparaison

 

8

6 Structures de controleˆ

iteratives´

 

10

6.1

Boucles for

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

10

6.1.1 Syntaxe

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

10

6.1.2 Exemple

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

10

6.2

Boucles while

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

11

6.2.1 Syntaxe

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

11

Exemple

6.2.2 .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

11

7 Expressions reguli´

eres`

 

11

8 Tableaux

12

Presentation´

8.1 .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

12

8.2 Initialisation

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

12

8.3 Lecture des el´ ements´

d’un tableau

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

13

8.4 Taille d’un tableau

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

13

9 Lecture entree´

standard

 

14

 

2

1

Variables

Un script shell est un ensemble de commandes interpret´ ees.´ ligne :

#!/bin/bash

Par convention, un script bash commence avec la

de commande que le shell qui sera execut´ e´ est un bash, et ceci,

quel que soit le shell interactif choisi par l’utilisateur pour les terminaux de commandes (xterm). Cette ligne revetˆ

une grande importance puisque la syntaxe des differents´

Il existe deux types de variables en shell, les variables d’environnement et les variables definies´ par l’utilisateur.

explicitement

Cette premiere`

ligne indique a` l’interpreteur´

langages de scripts shells est differente.´

1.0.1 Un petit exemple

# !/bin/bash

ce script ecrit´

# sur la sortie standard la liste des

# fichiers du repertoire´

bienvenu=’Bonjour utilisateur ’

bonjour=$bienvenu$USER

echo echo $bonjour echo ’Votre repertoire´

echo ”–> $PWD <– ” echo ’et son contenu est le suivant :’ echo ls echo

courant

courant est :’

Le caractere`

# est utilise´ pour les commentaires. Tout ce qui suit ce caractere`

n’est pas pris en compte pour

l’execution.´

Il s’agit simplement d’informations qui sont ajoutees´

au script pour ameliorer´

sa lisibilite.´

1.0.2 Variables internes

$USER et $PWD sont des variables internes. La liste des variables internes est longue, et est partiellement

obtenues par la commande env. Ces variables

du script. Certaines sont interessantes´

commune a` la liste des variables d’environnement qui peuvent etreˆ

n’ont pas a` etreˆ

definies´

par l’utilisateur, elles existent independamment´

:

$HOME : repertoire´

racine de l’utilisateur

$HOSTNAME : nom de la machine

$PATH : ensemble des chemins vers les executables´

$PWD : repertoire´

courant

$REPLY

$SECONDS

parametres`

de position : voir Section 2.

1.0.3

Variables definies´

par l’utilisateur

Pour les variables definies´

par l’utilisateur, une affectation se fait avec le nom de la variable qui n’est pas

prec´ ed´ e´ par le symbole $ comme cela est illustre´ avec les variables bienvenu et bonjour.

Attention : pour une affectation, il ne doit pas y avoir d’espace entre le nom de la variable, le signe = et la valeur

Pourquoi ?

toute ligne dans un script est interpret´ ee´

comme une commande par le langage de commandes, selon le format

3

classique :

nom-de-la-commande argument1 argument2 argument2

Operation´

sur les variables :

Pour effectuer une operation´

# !/bin/bash

var=1

echo ”\$var=$var”

var2=$var+1

echo ”\$var2=$var2” let var3=$var+1 echo ”\$var3=$var3”

var4=$((var+1))

echo ”\$var4=$var4” echo

sur une variable, ce n’est pas aussi simple, il faut utiliser la commande let.

La seconde fac¸on de faire les choses est un peu plus compliquee´

Substitution de commande :

il s’agit de la substitution de commande.

Ce mecanisme´

vous permet de recup´

erer´

le resultat´

d’une commande et de le traiter comme s’il etait´

les parentheses`

sur $(commande) et les simples

ecrit´

une ligne de commande. Il existe deux syntaxes pour ce mecanismes,´ quotes (accents graves) comme ceci ‘commande‘.

# !/bin/bash

rep courant=”$(ls )” rep audessus=‘ls echo $rep courant echo $rep audessus X=‘expr 3 2 + 4‘ # expr evalue´ echo $X

une expression arithmetique.´

1.0.4 Utilisation des quotes

L’utilisation des double quotes (”) permet l’affichage du contenu des variables qui sont contenues dans la chaˆıne. Dans l’exemple prec´ edent´ c’est ce qui se passe avec $PWD. Par contre, les simples quotes (’) ne le per- mettent pas. Donc, si vous manipulez des donnees´ textuelles simples dans lesquelles rien ne doit etreˆ interpret´ e´ pref´ erez´ les simples quotes. L’exemple suivant est tres` parlant concernant l’utilisation des quotes dans les shell. Voici deux shells apparam- ment tres` proches (ils ne different` que par l’utilisation de quotes dans le test) :

4

Shells

v=”” if [ -n $v ] ; then echo -n ’variable $v=’

v=”” if [ -n “$v” ] ; then echo -n ’variable $v=’

echo ”$v n’est pas vide”

echo ”$v n’est pas vide”

Resultats´

[guinand@localhost src]$ ./exemple2.bash variable $v= n’est pas vide

[guinand@localhost src]$ ./exemple2.bash

Le resultat´ n’est pas vraiment surprenant. En effet, le shell remplace la variable par son contenu c’est-a-dire` la chaˆıne vide, ce qui fait que la condition 1 -n qui teste si l’argument n’est pas la chaˆıne vide retourne vrai dans la mesure ou` il n’y a pas d’argument !

Dans le second cas, on lui passe une chaˆıne dans laquelle la valeur de la variable $v est contenue. Cette fois, nous avons bien la chaˆıne vide, c’est-a-dire` qu’il existe reellement´ un argument sur lequel le test peut etreˆ effectue.´

Autrement dit l’expression [ -n ], comme [ -n “toto” ] retourne vrai alors que [ -n “” ] retourne faux.

1.1 Exemples complementaires´

Le fait que le shell interprete`

# !/bin/bash

LS=”ls” PARAMS=” -al” $LS $PARAMS $HOME

le contenu des variables apparaˆıt clairement dans l’exemple ci-dessous :

Tout se passe en deux temps, dans un premier temps, les variables sont remplacees´

second temps, la ligne est interpret´ ee´

comme une ligne de commande.

par leur contenu, et dans un

Protection du nom de la variable. Il existe certaines situations pour lesquelles on est oblige´ de coller le nom de

la variable avec d’autres chaˆınes de caracteres`

# !/bin/bash

a=”a” ab=”abbb” abbb=”non, ce n’est pas la”`

echo ”$a bbb memeˆ echo ”$abbb memeˆ echo ”$abbb memeˆ echo

chose que $ab” chose que $ab” chose que $ab”

Sur la sortie standard, on recup´

ere`

:

ce qui pose des problemes`

d’interpretation.´

Exemple :

a bbb mˆeme chose que abbb non, ce n’est pas la mˆeme chose que abbb abbb mˆeme chose que abbb

1 cf Section 4

5

2

Arguments ligne de commande

Pour certains scripts, il est essentiel de travailler avec des parametres,`

et de pouvoir verifier´

que le nombre de

parametres`

Les valeurs des parametres` ces arguments : $* et $@

correspond a` l’usage que l’on attend du script. La variable qui contient cette valeur est : $#

se trouvent dans $1 $2

Il existe egalement´

d’autres variables pred´ efinies´

qui contiennent

Ces variables internes et quelques autres sont parfois appeles´

– $1, $2

– $* : les arguments de la ligne de commande vus comme une seule chaˆıne de caracteres`

– $@ : les arguments de la ligne de commande vus chacun comme une chaˆıne de caractere`

– $# : nombre d’arguments suivant le nom du script invoque´

Voici un exemple de script qui permet d’afficher le nombre et le contenu des parametres`

parametres`

de position :

: les arguments de la ligne de commande

manieres`

:

selon plusieurs

# !/bin/bash

echo if [ ”$#” -eq 0 ] ; then echo ”il faudrait que vous saisissiez au moins un parametre”` exit 1

echo ”Vous avez saisi $# parametres”` echo ”dont voici les valeurs :” echo ” le premier argument est $1” echo ”Voici l’ensemble des parametres` for arg in ”$*” do

echo ” selon \$* : $arg” done echo

index=1

for arg in ”$@” do

echo ” selon \$@ parametre` let ”index+=1” done echo

: ”

numero´

$index : $arg”

Autres parametres`

speciaux´

:

– $ ! : indique le numero´

– $$ : indique le numero´

– $ ? : valeur de retour de la derniere`

– $ : dernier argument de la derniere`

du dernier processus lance´ en tacheˆ

du processus du script lui meme.ˆ

commande evalu´

ee.´

commande lancee.´

de fond.

3 Evaluation d’expressions arithmetiques´

3.1 Commandes et operateurs´

Il existe trois principales commandes pour evaluer´

– let

((

))

des expressions arithmetiques´

6

:

Toutes les operations´

$((

))

arithmetiques´

commandes, les variables ne necessitent´

utilisent des entiers longs. Lorqu’elles sont utilisees´ pas de commencer par $ pour l’acces` a` leur contenu.

a` l’interieur´

de ces

Attention : ne pas confondre $((

mande de substitution (remplace l’ancien ‘

))

qui permet d’evaluer´

‘)

une expression arithmetique´

avec $(

)

qui est une com-

Les principaux operateurs´

– + -

– / division entiere,`

– * (multiplication) ** (puissance)

– && (et logique) —— (ou logique)

– = += -= *= /= %= (operateurs´

sont classiques :

% modulo (reste de la division entiere)`

d’affectation)

3.2 Exemple

# !/bin/bash

a=12

b=20

c=3

let ”d=a+b”

((e=b/a))

f=$((b**c))

echo ”addition : $a + $b = $d”

echo ”division entiere`

echo ”puissance : $b ** $c = $f”

echo ”reste de division entiere`

: $b / $a = $e”

: $b % $c = $((b%c))”

3.3 Commande expr

Il est egalement´ tion en detail.´

possible d’utiliser la commande expr pour evaluer´

une expression. man expr pour une explica-

4 Structures de controleˆ

4.1 Syntaxe

conditionnelles

Les structures de controleˆ

conditionnelles et iteratives´

mais leur syntaxe differe.`

En bash :

if condition ; then instruction 1 instruction 2

sont communes a` tous les langages de programmation,

ou

7

if condition ; then instruction 1 instruction 2 else instruction 3 instruction 4

ou

if condition ; then instruction 1 instruction 2 elif condition2 ; then instruction 3 instruction 4 else instruction 5 instruction 6

4.2

Exemple

# !/bin/bash if [ $# -eq 0 ] ; then

echo ”pas de parametres”` elif [ $# -eq 1 ] ; then

echo ”1 parametre”` elif [ $# -eq 2 ] ; then

echo ”2 parametres”`

else

echo ”plus de deux parametres”`

5 Operateurs´

de comparaison

La commande utilisee´ dans les expressions conditionnelle est la commande test, dont la syntaxe est : test

operande1´ operateur´ operande2´ , pour les operateurs´ binaires (pour les operateurs´ unaires, l’operande1´ est omis).

Mais il en existe une autre syntaxe : [ operande1´

operateur´

operande2´

]

Attention : les espaces entre les crochets et les operandes´

et autour de l’operateur´

sont requis

Les differents´

operateurs´

de comparaisons :

8

– if [ $a -eq $b ] teste l’egalit´ et faux sinon.

– if [ $a -neq $b ] teste si les deux operandes´

e´ des entiers contenues dans les variables $a et $b. Si tel est le cas, renvoie vrai

entiers sont differents´

– if [ $a = $b ] teste si les deux operandes´

chaˆınes de caracteres`

sont egaux´

– if [ $a != $b ] teste si les deux operandes´

chaˆınes de caracteres`

sont differents´

– if [ $a -lt $b ] teste si $a est strictement plus petit que $b (ce sont des entiers)

– if [ $a -ge $b ] teste si $a est superieur´

– if [ -n $a ] teste si $a n’est pas de longueur nulle

– if [ -z $a ] teste si $a est de longueur nulle

– if [ -e $HOME/.bashrc ] teste si le fichier $HOME/.bashrc existe

– if [ -L truc ] teste si truc est un lien symbolique

– if [ -f fic ] teste si fic est un fichier regulier´

– if [ -d dir ] teste si dir est un repertoire´

ou egal´

a` $b (ce sont des entiers)

#

!/bin/bash

if [ $# -lt 3 ] ; then echo ”il faut 3 parametres”` exit

 

if [ -n ”$1” ] ; then echo ”la chaine \$1=$1 est non vide” else echo ”la chaˆıne \$1= est vide”

if [ $2 -ge $3 ] ; then

 

ou egal´

a` $3”

echo ”$2 est superieur´ else echo ”$2 est inferieur´

strictement a` $3”

#

!/bin/bash

 

if [ -e ”$1” ] ; then echo ”le fichier $1 existe” if [ -L ”$1” ] ; then echo ”c’est un lien symbolique” elif [ -f ”$1” ] ; then echo ”c’est un fichier regulier”´ elif [ -d ”$1” ] ; echo “c’est un repertoire”´

 

else echo ”$1 n’existe pas”

 

9

6

Structures de controleˆ

iteratives´

Il existe deux formes de constructions iteratives,´

les boucles for et les boucles while. Les premieres`

d’iterer´

sur un ensemble de valeurs ou d’items precis´

alors que les secondes iterent`

sur une condition.

6.1 Boucles for

6.1.1 Syntaxe

permettent

forvariable in ensemble de valeurs do

 

instruction 1

instruction 2

done

Par defaut,´

le shell considere`

le symbole ’machin*’ comme l’ensemble des fichiers dont le nom correspond a`

l’expression machin suivi de n’importe quelle suite d’autres symboles. Ainsi * seul correspond a` l’ensemble des

fichiers situes´

dans le repertoire´

de travail.

6.1.2 Exemple

# !/bin/bash

bfr=”bonjour” bit=”buon giorno” beng=”good morning”

for bonjour in $bfr $bit $beng do

echo ”bonjour $bonjour” done echo for bonjour in ”$bfr” ”$bit” ”$beng” do

echo ”bonjour $bonjour” done

10

# !/bin/bash

nbfichiers=0

nbrep=0

for fichier in * do

if [ -f $fichier ] ; then let ”nbfichiers+=1” elif [ -d $fichier ] ; then let ”nbrep+=1”

done echo ”le repertoire´

echo ”$nbfichiers fichiers et ” echo ”$nbrep repertoires”´

echo

courant $PWD contient :”

6.2 Boucles while

6.2.1 Syntaxe

while[ operande1´

operateur´

operande2´

]

do

 

instruction 1

instruction 2

done

6.2.2

Exemple

# !/bin/bash

X=0

while [ $X -le 20 ] do

echo $X

X=$((X+1))

done

7 Expressions reguli´

eres`

Une expression reguli´ ere` peut etreˆ consider´ ee´ comme un modele` de motifs. Il existe des caracteres` a` la signifi-

: ’[’, ’.’, ’*’, ’ˆ’, ’$’ et ’\’.

– Le crochet ouvrant ’[’ est l’indicateur de debut´

[abcABC] (les caracteres` d’espacement).

– Le point ’.’ designe´

a, b, c, A, B, C), [0-9] (les chiffres de 0 a` 9 inclus), [ :space :] (les caracteres`

cation speciale´

de la definition´

d’un ensemble de caracteres.`

de fin de ligne.

un caractere`

quelconque sauf le caractere`

11

ab.cd designe´ toutes les chaˆınes qui contiennent une chaˆıne de 5 caracteres` qui commence par ab et se finit par cd

– L’etoile´ ’*’ indique que l’expression qui le prec´ ede` peut etreˆ presente´ un nombre de fois quelconque dans la chaˆıne.

ab*cd correspond a` toutes les chaˆınes qui contiennent une chaˆıne commenc¸ant par a et se finissant par cd et contenant un nombre quelconque de b entre le a et le c, [a-z]*[0-9][0-9][A-Z] designe´ toutes les chaˆınes

formees´

d’un nombre quelconque de minuscules suivies par deux chiffres et une lettre majuscule.

– L’accent circonflexe ’ˆ’ designe´ le debut´ de ligne s’il est en debut´ d’expression, ou la negation´ de l’ensemble

8

s’il est le premier caractere`

suivant le crochet ouvrant.

ˆ[0-9] toutes les chaˆınes commenc¸ant par un chiffre, ˆ[ˆ0-9] designe´ toutes les chaˆınes ne commenc¸ant pas par un chiffre.

– Le symbole dollar ’$’ designe´

ˆ0[A-Z]*4$ designe´ toutes les chaˆınes qui commencent par le chiffre 0 suivi par un nombre quelconque de majuscules et qui se terminent par le chiffre 4.

Autres formes d’expressions :

– a\{7\} : les chaˆınes qui verifient´

– a\{7,\} au moins 7 ’a’

– a\{3,10\} au minimum 3 et au maximum 10 ’a’

– ([0-9]\{3\})[a-z]([0-9])\1\2 ce mecanisme´ permet de conserver en memoire´ la chaˆıne qui verifie´ l’expres-

la fin de la ligne.

cette expression reguli´

ere`

doivent contenir une suite de 7 ’a’ consecutifs´

sion reguli´

ere`

entre parentheses,`

et de la rappeler ensuite a` l’aide de \numero´

les chaˆınes ABCD876r48764YUET et 999a39993 verifient´

l’expression reguli´

ere`

Tableaux

8.1 Presentation´

Les tableaux sont une structure de donnees´ essentielle en algorithmique. Un tableau est un ensemble de va-

riables que l’on peut acceder´ en lecture et en ecriture´ a` partir du memeˆ identifiant (tablo dans l’exemple ci-apres),`

en specifiant´

une position dans le tableau.

 

Exemple :

 
 

position

1

2

3

4

5

nom de la variable

tablo[1]

tablo[2]

tablo[3]

tablo[4]

tablo[5]

valeur

23

78

bonjour

“il fait beau”

-78.7654

8.2 Initialisation

# !/bin/bash

#———————— echo ”initialisation”

index=0

while [ $index -le 9 ] do

tab[$index]=$RANDOM let ”index++”

done

Cet exemple montre comment il est possible de construire un tableau de 10 entiers qui sont tires´ (entre 0 et 32767). La variable $RANDOM est une variable pred´ efinie.´ Il est possible d’initialiser une tableau directement :

12

aleatoirement´

# !/bin/bash

#———————— echo ”initialisation”

tab=($RANDOM 12 $RANDOM milieu 56 “il fait beau aujourd’hui”)

8.3 Lecture des el´ ements´

d’un tableau

# !/bin/bash

tab=($RANDOM 12 $RANDOM milieu 56 “il fait beau aujourd’hui”) #———————— echo ”contenu du tableau”

index=0

while [ $index -le 5 ] do

echo ”$index : $tab[$index]” let ”index=index+1”

done

Le nom de l’el´ ement´ du tableau doit imperativement´ etreˆ entre accolade, dans le cas contraire, $tab est consider´ e´

d’un crochet ouvrant, suivi d’une variable, suivie d’un

comme une variable et [$index] comme une chaˆıne formee´ crochet fermant. Les sorties de cet exemple sont les suivantes :

contenu du tableau

0 : 11208

1 : 12

2 : 9540

3 : milieu

4 : 12052

5 : il fait beau aujourd’hui

8.4 Taille d’un tableau

Il peut etreˆ

interessant´

de connaˆıtre le nombre d’el´ ements´

tablo alors son nombre d’el´ ements´

est egal´

a` : $#tablo[*]

Exemple :

d’un tableau. Si l’identifiant de notre tableau est

13

# !/bin/bash

index=0

echo ”remplissage du tableau” echo

nb=$RANDOM while [ $((nb%2)) -eq 0 ] do

tablo[$index]=$nb let ”index=index+1” nb=$RANDOM

done

echo ”taille du tableau : $#tablo[*]” echo echo ”contenu du tableau :” echo

index=0

while [ $index -lt $#tablo[*] ] do

echo $index $tablo[$index] let ”index=index+1”

done

Ce script construit un tableau dont le nombre d’el´ ements´ n’est pas connu, mais dont tous les el´ ements´ sont

pairs (c’est-a-dire`

que le reste de la division par 2 vaut 0).

Exemple de sorties a` l’ecran´ :

remplissage du tableau

taille du tableau : 4

contenu du tableau :

0

28282

1

2254

2

26758

3

19670

9

Lecture entree´

standard

14