GNU/Linux >> Tutoriels Linux >  >> Linux

Comment définir et utiliser des fonctions dans Linux Shell Script

La fonction est un bloc de code réutilisable. Souvent, nous mettons du code répété dans une fonction et appelons cette fonction à partir de divers endroits. La bibliothèque est une collection de fonctions. Nous pouvons définir des fonctions couramment utilisées dans une bibliothèque et d'autres scripts peuvent les utiliser sans dupliquer le code.

Dans cet article, nous aborderons plus en détail les fonctions et les recettes. À des fins de démonstration, j'utiliserai Bourne Again SHell (Bash) sur la machine Ubuntu.

Fonction d'appel

Dans Shell, l'appel de la fonction est exactement le même que l'appel de toute autre commande. Par exemple, si le nom de votre fonction est my_func, elle peut être exécutée comme suit :

$ my_func

Si une fonction accepte des arguments, ceux-ci peuvent être fournis à partir de la ligne de commande comme suit :

$ my_func arg1 arg2 arg3

Définir la fonction

Nous pouvons utiliser la syntaxe ci-dessous pour définir la fonction :

 function function_name {
            Body of function
 }

Le corps de la fonction peut contenir n'importe quelle commande valide, contrainte de boucle, autre fonction ou script. Créons maintenant une fonction simple qui affiche un message à l'écran.

 function print_msg {
       echo "Hello, World"
 }

Exécutons maintenant cette fonction :

 $ print_msg
 Hello, World

Comme prévu, cette fonction affiche un message à l'écran.

Dans l'exemple ci-dessus, nous avons créé une fonction directement sur le terminal. Nous pouvons également stocker cette fonction dans un fichier. L'exemple ci-dessous le démontre.

 #! /bin/bash
 function print_msg {
       echo "Hello, World"
 }
 print_msg

Nous avons défini cette fonction dans function.sh dossier. Exécutons maintenant ce script :

 $ chmod +x function.sh
 $ ./function.sh
 Hello, World

Si vous observez, la sortie ci-dessus est exactement identique à la précédente.

En savoir plus sur les fonctions

Dans la section précédente, nous avons défini une fonction très basique. Cependant, lors du développement du logiciel, nous avons besoin de fonctions plus avancées qui peuvent accepter divers paramètres et valeurs de retour. Dans cette section, nous aborderons ces fonctions.

Passer des arguments à la fonction

Nous pouvons fournir des arguments pour fonctionner de la même manière que les autres commandes. Nous pouvons accéder à ces arguments à partir de la fonction en utilisant le symbole dollar ($). Par exemple, $1 représente le premier argument, $2 représente le deuxième argument et ainsi de suite.

Modifions la fonction ci-dessus pour accepter le message comme argument. Notre fonction modifiée ressemblera à ceci :

 function print_msg {
       echo "Hello $1"
 }

Dans la fonction ci-dessus, nous accédons au premier argument en utilisant $1. Exécutons cette fonction :

 $ print_msg "LinuxTechi"

Lorsque vous exécutez cette fonction, elle générera la sortie suivante :

 Hello LinuxTechi

Renvoyer la valeur de la fonction

Comme d'autres langages de programmation, Bash fournit une instruction de retour à l'aide de laquelle nous pouvons renvoyer la valeur à l'appelant. Comprenons cela avec un exemple :

function func_return_value {
      return 10
 }

La fonction ci-dessus renvoie la valeur 10 à son appelant. Exécutons cette fonction :

 $ func_return_value
 $ echo "Value returned by function is: $?"

Lorsque vous exécutez la fonction ci-dessus, elle générera la sortie suivante :

 Value returned by function is: 10

REMARQUE : En bash, nous devons utiliser $ ? pour capturer la valeur de retour de la fonction

Recettes de fonction

Jusqu'à présent, nous avons eu une bonne idée des fonctions bash. Créons maintenant quelques fonctions bash utiles qui peuvent être utilisées pour nous faciliter la vie.

Enregistreur

Créons une fonction d'enregistrement qui imprimera la date et l'heure avec le message du journal.

 function log_msg {
        echo "[`date '+ %F %T'` ]: [email protected]"
 }

Exécutons cette fonction :

 $ log_msg "This is sample log message"

Lorsque vous exécutez cette fonction, elle générera la sortie suivante :

 [ 2018-08-16 19:56:34 ]: This is sample log message

Afficher les informations système

Créons une fonction pour afficher des informations sur le système GNU/Linux

 function system_info {
       echo "### OS information ###"
       lsb_release -a

       echo
       echo "### Processor information ###"
       processor=`grep -wc "processor" /proc/cpuinfo`
       model=`grep -w "model name" /proc/cpuinfo  | awk -F: '{print $2}'`
       echo "Processor = $processor"
       echo "Model     = $model"

       echo
       echo "### Memory information ###"
       total=`grep -w "MemTotal" /proc/meminfo | awk '{print $2}'`
       free=`grep -w "MemFree" /proc/meminfo | awk '{print $2}'`
       echo "Total memory: $total kB"
       echo "Free memory : $free kB"
 }

Lorsque vous exécutez la fonction ci-dessus, elle génère la sortie suivante :

### OS information ###
No LSB modules are available.
Distributor ID:           Ubuntu
Description:   Ubuntu 18.04.1 LTS
Release:         18.04
Codename:    bionic

### Processor information ###
Processor = 1
Model     =  Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz

### Memory information ###
Total memory: 4015648 kB
Free memory : 2915428 kB

Rechercher un fichier ou un répertoire dans le répertoire actuel

La fonction ci-dessous recherche un fichier ou un répertoire dans le répertoire actuel :

 function search {
      find . -name $1
 }

Cherchons dans le répertoire à savoir dir4 en utilisant la commande ci-dessous :

 $ search dir4

Lorsque vous exécutez la commande ci-dessus, elle générera la sortie suivante :

 ./dir1/dir2/dir3/dir4

Horloge numérique

La fonction ci-dessous crée une simple horloge numérique sur le terminal

 function digital_clock {
            clear
            while [ 1 ]
            do
                  date +'%T'
                  sleep 1
                  clear
            done
 }

Créer une bibliothèque

La bibliothèque est une collection de fonctions. Pour créer une bibliothèque, définissez des fonctions dans un fichier et importez ce fichier dans l'environnement actuel.

Supposons que nous ayons défini toutes les fonctions dans le fichier utils.sh, puis utilisez la commande ci-dessous pour importer les fonctions dans l'environnement actuel :

$ source utils.sh

Par la suite, vous pouvez exécuter n'importe quelle fonction de la bibliothèque comme n'importe quelle autre commande bash.

Conclusion

Dans cet article, nous avons discuté de quelques recettes utiles qui amélioreront votre productivité. J'espère que cet article vous inspirera pour créer vos propres recettes.


Linux
  1. Comment utiliser un mot de passe crypté dans le script Linux Bash Shell

  2. Comment comparer des nombres et des chaînes dans le script shell Linux

  3. Qu'est-ce qu'une commande Chown sous Linux et comment l'utiliser

  4. Comment installer et utiliser Flatpak sous Linux

  5. Comment vérifier si un groupe existe et ajouter s'il n'existe pas dans Linux Shell Script

Comment installer et utiliser SSHFS sous Linux

Comment installer et utiliser PuTTY sous Linux

Comment installer et utiliser phpMyAdmin sous Linux

Comment installer et utiliser ZSH Shell sous Linux

Comment installer et utiliser la commande fd sous Linux

Comment installer et utiliser Nu Shell sous Linux