Bash Basics Series #9 : Fonctions dans Bash


  • Français


  • La plupart des langages de programmation prennent en charge le concept de fonctions.

    Les fonctions vous aident à éviter d’écrire encore et encore le même morceau de code dans le même programme. Vous écrivez le code une fois en tant que fonction, puis utilisez cette fonction là où vous avez besoin du morceau de code spécifique.

    Dans le dernier chapitre de la série Bash Basics, vous apprendrez à utiliser les fonctions dans les scripts bash.

    Fonctions en bash

    Voici la syntaxe générique pour déclarer une fonction bash :

    function_name() {
      commands
    }

    Les commandes à l’intérieur de la fonction ne seront exécutées que si vous “appelez la fonction” dans le script.

    Voici un code factice pour démontrer que :

    function_name() {
      commands
    }
    
    some_other_commands
    
    #FUNCTION CALL
    function_name argument;
    

    🚧

    La définition de la fonction doit venir avant d’appeler la fonction.

    Voyons cela avec un exemple simple :

    #!/bin/bash
    
    fun() {
    	echo "This is a function"
    }
    
    echo "This is a script"
    fun

    Lorsque vous exécutez le script, vous devriez voir une sortie comme celle-ci :

    This is a script
    This is a function

    La fonction est appelée sans argument. Voyons comment gérer les arguments avec des fonctions dans bash.

    Passer des arguments aux fonctions

    Passer des arguments à des fonctions revient à passer des arguments à des scripts bash. Vous mentionnez les arguments avec le nom de la fonction lorsque vous appelez la fonction.

    function_name argument;

    Voyons cela avec un exemple :

    #!/bin/bash
    
    sum() {
    	sum=$(($1+$2))
    	echo "The sum of $1 and $2 is: $sum"
    }
    
    echo "Let's use the sum function"
    sum 1 5

    Si vous exécutez le script, vous verrez le résultat suivant :

    Let's use the sum function
    The sum of 1 and 5 is: 6

    Gardez à l’esprit que les arguments passés aux scripts ne sont pas les mêmes que les arguments passés à la fonction.

    Dans l’exemple ci-dessous, j’ai échangé les arguments lors de l’appel de la fonction.

    #!/bin/bash
    
    arg() {
    	echo "1st argument to function is $1 and 2nd is $2"
    }
    
    echo "1st argument to script is $1 and 2nd is $2"
    arg $2 $1

    Et lorsque vous exécutez le script, vous verrez l’échange :

    [email protected]:~/bash_scripts$ ./function.sh abhi shek
    1st argument to script is abhi and 2nd is shek
    1st argument to function is shek and 2nd is abhi

    Fonction récursive dans bash

    Une fonction récursive s’appelle elle-même. C’est ce qu’est la récursivité. Ce mème peut vous aider à le comprendre.

    mème de récursivité

    Maintenant, la fonctionnalité récursive est assez puissante et pourrait vous aider à écrire des programmes compliqués.

    Voyons-le en action avec un exemple de script qui calcule la factorielle d’un nombre. Au cas où vous ne vous en souviendriez pas, la factorielle est définie comme ceci.

    factorial of n (n!) = 1 * 2 * 3 * 4 *...  * n
    

    Ainsi, la factorielle de 5 est 1 * 2 * 3 * 4 * 5, ce qui donne 120.

    Voici mon script pour calculer la factorielle d’un nombre donné en utilisant la récursivité.

    #!/bin/bash
    
    factorial() {
    	
    	if [ $1 -gt 1 ]; then
    		echo $(( $1 * $(factorial $(( $1 -1 ))) ))
    	else
    		echo 1
    	fi
    	
    }
    
    echo -n "Factorial of $1 is: "
    factorial $1

    Faire attention à echo $(( $1 * $(factorial $(( $1 -1 ))) )). Le code appelle la fonction elle-même avec 1 valeur de moins. Le processus se poursuit jusqu’à ce que la valeur soit égale à 1. Ainsi, si vous exécutez le script avec l’argument 5, il en résultera finalement 5 * 4 * 3 * 2 * 1.

    [email protected]:~/bash_scripts$ ./factorial.sh 5
    Factorial of 5 is: 120
    

    C’est bien. Que diriez-vous d’un peu de pratique?

    🏋️ Temps d’exercice

    Voici quelques exemples de défis de script pour mettre en pratique votre apprentissage.

    Exercice 1 : écrivez un script bash qui utilise une fonction appelée is_even pour vérifier si le nombre donné est pair ou non.

    Exercice 2 : Un exercice similaire où vous devez écrire un script qui a une fonction is_prime et qui vérifie si le nombre donné est premier ou non. Si vous ne le saviez pas déjà, un nombre premier n’est divisible que par 1 et le nombre lui-même.

    Exercice 3 : Écrivez un script qui génère la séquence de Fibonacci du nombre donné. La séquence commence à 1 et le script doit accepter des nombres supérieurs à 3.

    Donc, si vous faites fibonacci.sh 5il devrait générer 1 1 2 3 5.

    Et c’est tout, les amis ! C’est la fin de la série Bash Basics. Bien sûr, ce n’est que la pointe de l’iceberg ; il y a bien plus à faire avec les scripts bash que ce que vous avez appris ici.

    Mais vous devriez maintenant avoir une bonne idée du shell bash. Vous devriez être capable de comprendre la plupart des scripts bash et d’en écrire des simples, voire compliqués.

    Si vous voulez plonger plus profondément, rien de mieux que le manuel GNU Bash.

    Manuel GNU Bash – Projet GNU – Free Software Foundation

    🗨 J’espère que vous avez aimé cette série Bash Basics. Nous créons plus de séries de tutoriels pour vous offrir une expérience d’apprentissage plus simple. Veuillez fournir vos commentaires et nous aider à aider les autres avec Linux.

    Source

    Houssen Moshinaly

    Pour contacter personnellement le taulier :

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

    Copy code