← retour aux snippets

bash strict mode sécurisé

Activer un mode bash robuste pour échouer vite et éviter les pièges.

objectif

Activer un mode bash sûr qui arrête le script en cas d’erreur et évite les comportements ambigus.

code minimal

#!/usr/bin/env bash
set -Eeuo pipefail
IFS=$'\n\t'

trap 'echo "erreur: ligne=$LINENO cmd=\"$BASH_COMMAND\"" >&2' ERR

utilisation

# placez ces lignes en tête de vos scripts .sh
bash ./mon_script.sh

variante(s) utile(s)

# traçage des commandes pour le debug
set -x

# hériter de -e dans les substitutions de commande (bash ≥ 4.4)
shopt -s inherit_errexit

# handler d'erreur plus détaillé et nettoyage
on_error() {
  local code=$?
  local line=${BASH_LINENO[0]:-}
  echo "échec: code=$code ligne=$line cmd=\"$BASH_COMMAND\"" >&2
}
cleanup() { :; }
trap on_error ERR
trap cleanup EXIT

notes

  • -e stoppe à la première erreur, -u refuse les variables non définies, pipefail propage l’échec d’un pipe.
  • réglez IFS pour éviter les splits dangereux sur espaces.
  • utilisez read -r pour ne pas interpréter les backslashes.
  • inherit_errexit rend les échecs plus visibles dans les sous-commandes.