#!/bin/bash
# assert.sh

assert ()                 #  Si la condition est fausse,
{                         #+ sort du script avec un message d'erreur.
  E_PARAM_ERR=98
  E_ASSERT_FAILED=99


  if [ -z "$2" ]          # Pas assez de paramètres passés
  then                    # à la fonction assert().
    return $E_PARAM_ERR   # Pas de dommages.
  fi

  noligne=$2

  if [ ! $1 ] 
  then
    echo "Mauvaise assertion :  \"$1\""
    echo "Fichier \"$0\", ligne $noligne"
                          # Donne le nom du fichier et le numéro de ligne
    exit $E_ASSERT_FAILED
  # else (sinon)
  #   return (retour)
  #   et continue l'exécution du script.
  fi
} # Insèrer une fonction assert() similaire dans un script
  #+  que vous devez déboguer.
#######################################################################


a=5
b=4
condition="$a -lt $b"     # Message d'erreur et sortie du script.
                          #  Essayer de configurer la "condition" en autre chose
                          #+ et voir ce qui se passe.

assert "$condition" $LINENO
# Le reste du script s'exécute si assert n'échoue pas.


# Quelques commandes.
# Quelques autres commandes...
echo "Cette instruction s'exécute seulement si \"assert\" n'échoue pas."
# ...
# Quelques commandes de plus.

exit $?
