Recherche de site Web

Comment écrire et utiliser des fonctions et des bibliothèques Shell personnalisées


Sous Linux, les scripts shell nous aident de nombreuses manières différentes, notamment en effectuant ou même en automatisant certaines tâches d'administration système, en créant des outils de ligne de commande simples et bien d'autres encore.

Dans ce guide, nous montrerons aux nouveaux utilisateurs Linux où stocker de manière fiable des scripts shell personnalisés, expliquerons comment écrire des fonctions et des bibliothèques shell personnalisées, utiliser les fonctions des bibliothèques dans d'autres scripts.

Où stocker les scripts Shell

Afin d'exécuter vos scripts sans saisir de chemin complet/absolu, ils doivent être stockés dans l'un des répertoires de la variable d'environnement ` PATH.

Pour vérifier votre ` PATH, exécutez la commande ci-dessous :

echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Normalement, si le répertoire bin existe dans le répertoire personnel d'un utilisateur, il est automatiquement inclus dans son ` PATH. Vous pouvez stocker vos scripts shell ici.

Créez donc le répertoire bin (qui peut également stocker des scripts Perl, Awk ou Python ou tout autre programme) :

mkdir ~/bin

Ensuite, créez un répertoire appelé lib (abréviation de bibliothèques) dans lequel vous conserverez vos propres bibliothèques. Vous pouvez également y conserver des bibliothèques pour d’autres langages tels que C, Python, etc. En dessous, créez un autre répertoire appelé sh ; cela stockera notamment vos bibliothèques shell :

mkdir -p ~/lib/sh 

Créez vos propres fonctions et bibliothèques Shell

Une fonction shell est un groupe de commandes qui exécutent une tâche spéciale dans un script. Ils fonctionnent de la même manière que les procédures, sous-programmes et fonctions d’autres langages de programmation.

La syntaxe pour écrire une fonction est la suivante :

function_name() { list of commands }

Par exemple, vous pouvez écrire une fonction dans un script pour afficher la date comme suit :

showDATE() {date;}

Chaque fois que vous souhaitez afficher la date, invoquez simplement la fonction ci-dessus en utilisant son nom :

showDATE

Une bibliothèque shell est simplement un script shell, cependant, vous pouvez écrire une bibliothèque pour stocker uniquement vos fonctions que vous pourrez appeler ultérieurement à partir d'autres scripts shell.

Vous trouverez ci-dessous un exemple de bibliothèque appelée libMYFUNCS.sh dans mon répertoire ~/lib/sh avec plus d'exemples de fonctions :

#!/bin/bash 

#Function to clearly list directories in PATH 
showPATH() { 
        oldifs="$IFS"   #store old internal field separator
        IFS=:              #specify a new internal field separator
        for DIR in $PATH ;  do echo $DIR ;  done
        IFS="$oldifs"    #restore old internal field separator
}

#Function to show logged user
showUSERS() {
        echo -e “Below are the user logged on the system:\n”
        w
}

#Print a user’s details 
printUSERDETS() {
        oldifs="$IFS"    #store old internal field separator
        IFS=:                 #specify a new internal field separator
        read -p "Enter user name to be searched:" uname   #read username
        echo ""
       #read and store from a here string values into variables using : as  a  field delimiter
    read -r username pass uid gid comments homedir shell <<< "$(cat /etc/passwd | grep   "^$uname")"
       #print out captured values
        echo  -e "Username is            : $username\n"
        echo  -e "User's ID                 : $uid\n"
        echo  -e "User's GID              : $gid\n"
        echo  -e "User's Comments    : $comments\n"
        echo  -e "User's Home Dir     : $homedir\n"
        echo  -e "User's Shell             : $shell\n"
        IFS="$oldifs"         #store old internal field separator
}

Enregistrez le fichier et rendez le script exécutable.

Comment appeler des fonctions à partir d'une bibliothèque

Pour utiliser une fonction dans une lib, vous devez tout d'abord inclure la lib dans le script shell où la fonction sera utilisée, sous la forme ci-dessous :

./path/to/lib
OR
source /path/to/lib

Vous utiliseriez donc la fonction printUSERDETS de la bibliothèque ~/lib/sh/libMYFUNCS.sh dans un autre script comme indiqué ci-dessous.

Vous n'avez pas besoin d'écrire un autre code dans ce script pour imprimer les détails d'un utilisateur particulier, appelez simplement une fonction existante.

Ouvrez un nouveau fichier portant le nom test.sh :

#!/bin/bash 

#include lib
.  ~/lib/sh/libMYFUNCS.sh

#use function from lib
printUSERDETS

#exit script
exit 0

Enregistrez-le, puis rendez le script exécutable et exécutez-le :

chmod 755 test.sh
./test.sh 

Dans cet article, nous vous avons montré où stocker de manière fiable les scripts shell, comment écrire vos propres fonctions et bibliothèques shell, appeler des fonctions à partir de bibliothèques dans des scripts shell normaux.

Ensuite, nous expliquerons une manière simple de configurer Vim en tant qu'IDE pour les scripts Bash. D'ici là, restez toujours connecté à TecMint et partagez également vos réflexions sur ce guide via le formulaire de commentaires ci-dessous.