Les fonctions Bash

Pourquoi utiliser des fonctions ?

Une fonction sert à réutiliser du code sans tout réécrire. Elle permet de donner un nom à une série de commandes et de les exécuter facilement plusieurs fois dans un script.


Déclaration d'une fonction

dire_bonjour() {
  echo "Bonjour !"
}

Ici : - dire_bonjour est le nom de la fonction.


Appeler une fonction

Pour exécuter la fonction :

dire_bonjour

Résultat :

Bonjour !

Passer des arguments

On peut envoyer des valeurs à la fonction (comme dans les commandes Linux).

dire_bonjour() {
  echo "Bonjour $1 !"
}

Appel :

dire_bonjour Pierre

Résultat :

Bonjour Pierre !

Codes de retour

Chaque commande (et fonction) renvoie un code de retour : - 0 = succès

ma_fonction() {
  if [[ -f "$1" ]]; then
    echo "Le fichier existe"
    return 0
  else
    echo "Fichier introuvable"
    return 1
  fi
}

ma_fonction "/etc/hosts"
echo "Code de retour : $?"

$? donne le code de retour de la dernière commande ou fonction.


Astuce : retourner une "valeur"

Les fonctions ne peuvent pas renvoyer du texte avec return. Elles utilisent echo, et on capture le résultat avec $() :

get_date() {
  echo "$(date +%F)"
}

aujourd_hui="$(get_date)"
echo "Nous sommes le $aujourd_hui"

En résumé