#!/bin/bash
# max2.sh : Maximum de deux GRANDS entiers.

#  Ceci correspond au précédent exemple "max.sh", modifié pour permettre la
#+ comparaison de grands entiers.

EGAL=0              # Code de retour si les deux paramètres sont égaux.
E_PARAM_ERR=99999   # Pas assez de paramètres fournis à la fonction.
#           ^^^^^^    En dehors de la plage de tout paramètre fourni

max2 ()             # Renvoie le plus gros des deux nombres.
{
if [ -z "$2" ]
then
  echo $E_PARAM_ERR
  return
fi

if [ "$1" -eq "$2" ]
then
  echo $EGAL
  return
else
  if [ "$1" -gt "$2" ]
  then
    retval=$1
  else
    retval=$2
  fi
fi


echo $retval        # Affiche (sur stdout) plutôt que de retourner la valeur.
                    # Pourquoi ?
}


valeur_retour=$(max2 33001 33997)
#               ^^^^             nom de la fonction
#                    ^^^^^ ^^^^^ paramètres fournis
#  C'est en fait une forme de substitution de commandes :
#+ traiter une fonction comme s'il s'agissait d'une commande
#+ et affecter la sortie de la fonction à la variable "valeur_retour".


# ========================= SORTIE ========================

if [ "$valeur_retour" -eq "$E_PARAM_ERR" ]
  then
  echo "Erreur : Pas assez de paramètres passés à la fonction de comparaison."
elif [ "$valeur_retour" -eq "$EGAL" ]
  then
    echo "Les deux nombres sont égaux."
else
    echo "Le plus grand des deux nombres est $valeur_retour."
fi  
  
exit 0

# =========================================================


#  Exercices :
#  ----------
#  1) Trouvez un moyen plus élégant pour tester les paramètres passés à la
#+    fonction.
#  2) Simplifiez la structure du if/then à partir de "SORTIE".
#  3) Réécrire le script pour prendre en entrée des paramètres de la ligne de
#     commande.
