Fonctions de base en Bash

Introduction à la programmation Bash

Alex Scriven

Data Scientist

Pourquoi des fonctions ?

 

Si vous avez utilisé des fonctions en R ou en Python, vous connaissez déjà ces avantages :

  1. Les fonctions sont réutilisables
  2. Elles favorisent un code propre et modulaire
  3. Elles facilitent le partage du code (il suffit de connaître les entrées et les sorties)
Introduction à la programmation Bash

Anatomie d'une fonction Bash

Voyons la syntaxe d'une fonction :

  • Commencez par la nommer. Ce nom servira à l'appeler.
    • Choisissez un nom clair !
  • Ajoutez des parenthèses après le nom
  • Placez le code entre accolades. Vous pouvez y utiliser tout ce que vous avez vu (boucles, IF, shell‑dans‑le‑shell, etc.) !
  • Retour facultatif de quelque chose (attention : ce n'est pas ce que vous croyez)

 

Une fonction Bash a la syntaxe suivante :

function_name () {
    #function_code
    return #something
}
Introduction à la programmation Bash

Structure alternative d'une fonction Bash

Vous pouvez aussi créer une fonction ainsi :

function function_name {
    #function_code
    return #something
}

Principales différences :

  • Utilisez le mot function pour indiquer le début de la définition
  • Vous pouvez omettre les parenthèses sur la première ligne, bien que plusieurs les gardent par convention
Introduction à la programmation Bash

Appeler une fonction Bash

Appeler une fonction Bash consiste simplement à écrire son nom :

function print_hello () {
    echo "Hello world!"
}

print_hello # ici, on appelle la fonction
Hello world!
Introduction à la programmation Bash

Fonction Bash : Fahrenheit vers Celsius

Écrivons une fonction pour convertir Fahrenheit en Celsius, comme dans une leçon précédente, en utilisant une variable statique.

temp_f=30

function convert_temp () {
temp_c=$(echo "scale=2; ($temp_f - 32) * 5 / 9" | bc)
echo $temp_c }
convert_temp # appeler la fonction
-1.11
Introduction à la programmation Bash

Passons à la pratique !

Introduction à la programmation Bash

Preparing Video For Download...