Université Pierre et Marie Curie

Systèmes d'exploitation des ordinateurs

Chapitre 1. Les systèmes d'exploitation
Chapitre 2. Mécanismes d'exécution et de communication
Chapitre 3. Gestion des activités parallèles
Chapitre 4. Gestion des fichiers
Chapitre 5. Partage des ressources
Chapitre 6. Au-dessus du système d'exploitation
6.1. Programmation shell sous Unix
6.1.1. notions de base
6.1.2. Contrôle de flux
6.1.3. Fonctions
6.1.4. Démarrage de session
6.2. Compilateurs
6.3. Fichiers et bases de données
6.4. Sauvegardes et archivage
Chapitre 7. Notions sur les communications
Chapitre 8. Notions sur la sécurité
Bibliographie
Chapitre 9. Exercices et TPs
Examens
Page d'accueilTable des matièresNiveau supérieurPage précédenteBas de la pagePage suivante

6.1.3. Fonctions

Il est possible de structurer un script en fonctions. Les variables seront globales si elles sont déclarées avant le corps des fonctions. Les arguments d'une fonction sont reconnus dans son corps par leur ordre dans l'appel : $1, $2, ...

Un script est interprété, ce qui signifie que tous les éléments nécessaires au décodage d'une ligne de commande doivent être connus auparavant; Il est donc indispensable qu'une fonction soit placée avant son appel. Le corps d'un script (le main) est donc placé en dernier.

La structure qui en résulte est donc :

#!/bin/bash

... déclarations globales des variables

# première fonction

function fonction_1

  {

    .. déclarations locales des variables si nécessaire

    ... instructions

    ... les valeurs d'arguments sont $1, $2...

  }

# 2ème fonction

function fonction_2

  {

    ... instructions

    ... les valeurs d'arguments sont $1, $2...

  }

# début du script

   ... instructions

# appel à fonction_1 :  2 arguments x et y

   fonction_1 x y

...

# appel à fonction_2 avec 3 arguments

  fonction_2 u v w

 ...

Une fonction peut retourner une valeur par l'instruction

      return  $valeur

Dans la fonction d'appel cette valeur sera récupérée dans la variable $? Si on veut récupérer une valeur entière.

Pour récupérer une chaîne de caractères on emploiera :

   chaine=$ ( fonction_1 [ x y ] )

En voici un exemple.

Arguments d'un script

Lorsqu'on exécute un script il est possible de lui passer des arguments sur la ligne de commande. Ceci est utile, en particulier, pour vérifier le bon usage de ce script : nombre des arguments, courte aide en ligne, à la manière des commandes Unix. Un script n'est qu'une fonction appelée par le shell mais le passage d'arguments s'effectue d'une façon particulière.

  • $0 est le nom du script lui-même
  • $1, $2.. ${10}, ... .un argument
  • $# le nombre d'arguments
  • $@ la liste des arguments à partir de $1

Par exemple la séquence suivante déclenchera une courte aide en ligne

  if [[ $1 == '?' ]] ;then

     echo "usage mon_script nom de fichier"

     exit

 fi

Exemple d'usage des arguments


Copyright Yves Epelboin, université P.M. Curie, février 2003, MAJ 25 février, 2007

Page d'accueilTable des matièresNiveau supérieurPage précédenteHaut de la pagePage suivante