Définir -e dans les scripts Bash

Nilesh Katuwal 30 janvier 2023
  1. Utilisation de set -e en dehors du corps de la fonction dans Bash
  2. Utilisation de set -e dans le corps de la fonction dans Bash
Définir -e dans les scripts Bash

Si la commande renvoie un état de sortie différent de zéro, l’option set -e indique au shell de quitter. En termes simples, le shell se ferme lorsqu’une commande échoue.

Dans les scripts de gestion de paquets Debian, set -e est également connu sous le nom de set -o errexit. Selon la politique Debian, l’utilisation de cette option est requise dans certains scripts ; l’objectif semble être d’éviter tout risque de scénario d’erreur non gérée.

En réalité, cela signifie que vous devez comprendre les situations dans lesquelles les commandes que vous exécutez peuvent renvoyer une erreur et résoudre explicitement chacun de ces problèmes.

Utilisation de set -e en dehors du corps de la fonction dans Bash

Écrivons un script Bash pour afficher Hello World en utilisant la fonction hello_world. Nous utiliserons set -e en dehors de la fonction.

set -e n’est utilisé que pour écrire ou définir un code d’affichage d’erreur.

#!/bin/bash
set -e
function hello_world()
{
echo "Hello World!"
}
hello_world

Production :

Hello World!

Utilisation de set -e dans le corps de la fonction dans Bash

Maintenant, nous allons mettre set -e à l’intérieur de la fonction dans le script ci-dessus.

#!/bin/bash
function hello_world()
{
set -e
echo "Hello World!"
}
hello_world

Production :

Hello World!

L’utilisation de set-e à l’intérieur ou à l’extérieur d’une fonction n’affecte pas notre sortie.

set -e Avec trap

La commande set -e indique au terminal de lever une exception lorsqu’il détecte une erreur, provoquant l’arrêt de l’exécution du code. Le mot-clé trap vous permet d’utiliser une fonction intégrée, ERR, qui accepte le numéro de ligne d’erreur et le transmet à la fonction d’erreur.

Prenons un exemple.

#!/bin/bash
set -e
function error()
{
echo "error at $1"
}
trap 'error $LINENO' ERR

errors

Nous avons créé une fonction error et utilisé la variable shell $1 pour stocker le numéro de la ligne où l’erreur s’est produite.

Production :

demo.sh: line 9: errors: command not found
error at 9

demo.sh est le nom du fichier de script qui contient le script ci-dessus.

Si une ligne d’un script échoue, mais que la dernière ligne réussit, le script dans son ensemble est considéré comme réussi. En conséquence, il est assez facile d’ignorer l’erreur.

Être intolérant aux erreurs est bien meilleur dans les scripts, et set -e vous le fournit.