Vous êtes sur la page 1sur 13

Chapitre 4

Système d’Exploitation
UNIX
Programmation Shell:
Tableaux et Fonctions

A.ROUDANE
Les Tableaux

On utilise toujours les parenthèses pour les déclarer.


Les tableaux n'ont pas besoin d'être déclarés.
On accède à une valeur avec [n], où n est le numéro de l'élément.
En Shell, la première case d'un tableau ne porte pas le numéro 1 mais
le numéro 0.

Exemple 1:
#!/bin/bash
nom=(Rabat Casa Settat Marrakech Fès)
echo ${nom[*]} #permet d’afficher tous les éléments
echo ${nom[@]}
echo "premiere case: ${nom[0]}" "deuxieme case: ${nom[1]}"
echo "Ce tableau comporte ${#nom[*]} cases."
Les Tableaux

Exemple 2:
Les Fonctions

Les fonctions sont indispensables pour bien structurer un programme


mais aussi pouvoir le simplifier, créer une tâche, la rappeler… Voici la
syntaxe générale de 'déclaration‘ d'une fonction.

Les paramètres au sein de la fonction sont accessibles via:


$1, $2, ... $@, $#.
L’appel d’une fonction se fait de la manière suivante :
Nom_fonction parametre1 parametre2 ...
Une fonction doit être déclarée avant de pouvoir être exécutée.
Les Fonctions

Exemples:

#définition #définition
Affiche () Affiche ()
{ {
read –p ‘entrez votre nom’ nom echo " bonjour $1 "
echo "bonjour $nom" }
}
# Appel de la fonction
#Appel de la fonction read –p ‘entrez votre nom’ nom
Affiche Affiche $nom

Paramètre de la
fonction
Les Fonctions

Exemples:

#definition
Affiche ()
{
echo "bonjour $1"
Paramètre de la
}
fonction
#Appel de la fonction
Affiche $1
Affiche $2

Paramètres du
Script
Les Fonctions

Exemples:

Function affiche
{
let c=$1+$3
echo $c $ ./script.sh 12 16 32
}
48
#Appel de la fonction
Affiche $3 $1 $2
$1 $2 $3

32 12 16
Les Fonctions

return n
Renvoie une valeur de retour pour la fonction Shell.

exit n
Provoque l’arrêt du Shell courant avec un code retour de n si celui-ci est
spécifié. S’il n’est pas spécifié, il s’agira de la valeur de retour de la
dernière commande exécutée.
Les Fonctions: Retour de
fonction

L'instruction « return [n] » met immédiatement fin à l'exécution de


la fonction.
Le paramètre « n » facultatif vaut « 0 » par défaut, mais ne peut pas
dépasser « 255 ».
Il correspond au « statut » de la fonction et est, de ce fait, retransmis
à la variable « $? » du programme ayant appelé cette fonction .
Cette instruction peut donc rendre une fonction « vrai » ou « faux »
selon les conventions du Shell.
Les Fonctions: Retour de
fonction

#!/bin/bash
# Fonction qui teste la parité d'une valeur
pair_impair()
{
if [ `expr $1 % 2` -eq 0 ] #let c=$1%2; if [ $c –eq 0 ]
then
return 0
else
return 1
fi $./script.sh 5 78 90 12 3
} Impair
# Pour chaque nombre passé au programme Pair
for nb in $* Pair
do Pair
# Vérification de la parité de ce nombre impair
if pair_impair $nb
then
echo "$nb est pair"
else
echo "$nb est impair "
fi
done
Les Fonctions: Valeur renvoyée

Il ne faut pas confondre la notion de « retour de fonction » en Shell et la notion


de « valeur renvoyée par une fonction » telle qu'on l'entend dans d'autres
langages, comme le C.
en Shell, cette notion de « valeur renvoyée » ne peut être que simulée
par l'utilisation d'un « affichage unique et final » dans la fonction
ce qui permet au programmeur de récupérer dans une variable ce que la
fonction affiche en utilisant les «backquotes».
Les Fonctions: Valeur renvoyée

#!/bin/sh
# Fonction qui renvoie le carré du nombre qu'elle reçoit
carre()
{
# Affichage du carré du nombre reçu
expr $1 \* $1
}

# Pour chaque nombre passé au programme


For nb in $*
do
# Récupération du carré de ce nombre
result=`carre $nb`
# Affichage (ou autre traitement quel qu'il soit) de ce résultat
echo "Le carré de $nb vaut $result"
done
Exercices

Exercice1: Calculatrice
Créer un script dans lequel deux nombres opérandes et un signe opérateur (+-*/)
devront être donnés en paramètres, ou saisis. Le script doit réaliser l'opération
souhaitée.
Exemple :
[ ~] ./calculette.sh 7 + 4
Le calcul devra être fait à l'aide d'une fonction calcul ().

Exercice 2: TestUser
Créer un script qui vous propose le menu suivant :
1 - Vérifier l'existence d'un utilisateur
2 - Connaître l'UID d'un utilisateur
q - Quitter
L'utilisateur devra être saisi, à l'aide d'une fonction. Son existence devra être
vérifiée à l'aide d'une autre fonction et son UID doit être affiché par une 3éme
Fonction.

Vous aimerez peut-être aussi