dimanche 24 avril 2005

Les fonctions


FONCTION

Tout comme dans la majorité des autres langages de programmation, il est possible de créer des fonctions.

Simple fonction

La définition d'une fonction est similaire au langage C.

function bonjour()
{
  echo "bonjour"
}

il est aussi possible de faire:

bonjour()
{
  echo "bonjour"
}

Il suffit d'invoquer le nom de la fonction pour qu'elle soit appelée. La définition de la fonction doit être fait avant son appel.

#!/bin/bash
bonjour()
{
  echo "bonjour"
}

bonjour

Argument

Il est possible de passer des arguments à une fonction. Dans la fonction, il suffit de vérifier la valeur de $1, $2...

#!/bin/bash
information()
{
  if [ -n "$1" ]
  then
    echo $1;
  else
    "Aucun paramètre"
  fi
}

information "salut"
#!/bin/bash
information()
{
  if[ -n "$1"]
    echo $1
  else
    echo "Aucun paramètre";
  fi
  return 0
}

information
information "salut"

Argument

Nous allons maintenant créer une fonction qui retourne une valeur.
function min()
{
  if [ -n "$1" ] && [ -n "$2"  ]
  then
    if [ "$1" -lt  "$2" ]
    then
      return $1;
    else
      return $2;
    fi
  fi
}
min 112 13
echo "$? est la plus petite valeur"

Essayer de mettre une valeur supérieure à 256 comme argument.
Prenez note qu'une fonction ne peut renvoyer une valeur supérieure à 256. Cette contrainte provient des codes de sortie. Dans les nombres négatifs, il est possible d'aller beaucoup plus loin. Il suffit d'utiliser une variable globale pour pallier à ce problème.

VAL=
function min()
{
  if [ -n "$1" ] && [ -n "$2"  ]
  then
    if [ "$1" -lt  "$2" ]
    then
      VAL=$1
    else
      VAL=$2
    fi
  fi
}
min 1132 1300

echo "$VAL est la plus petite valeur "

Prenez note de la syntaxe de la déclaration de la variable VAR.
Vous devez utiliser une variable si vous désirez retourner une chaîne de caractère.
Prenez note qu'une variable déclaré dans une fonction à une portée globale au script. Elle peut donc être utilisé partout ailleurs. Pour éviter cela, il faut mettre avant le nom de la variable local lors de son initialisation.

local prenom="paul"

Nous avons complété la partie traitant des fonctions. Un script avec tous les exemples peut téléchargez ici