#!/bin/sh
# validint -- Valide des entiers, et autorise aussi des entiers ngatifs.

function validint
{
  # Valide le premier champ. Puis teste les valeurs mini $2 et maxi $3 
  # si elles sont fournies. Dans le cas contraire, passe les tests.
  number="$1";     min="$2";     max="$3"

  if [ -z $number ] ; then
    echo "Vous n'avez rien tap. C'est interdit." >&2 ; 
    return 1
  fi

  if [ "${number%${number#?}}" = "-" ] ; then
    # le premier caractre est-il un signe '-'? 
    testvalue="${number#?}"     # tout sauf le premier caractre
  else  
    testvalue="$number" 
  fi

  nodigits="$(echo $testvalue | sed 's/[[:digit:]]//g')"

  if [ ! -z $nodigits ] ; then
    echo "Format de nombre invalide! Ne tapez que des chiffres, pas de virgules, de blancs, etc." >&2
    return 1
  fi

  if [ ! -z $min ] ; then
    if [ "$number" -lt "$min" ] ; then  
      echo "Valeur trop petite: la valeur minimale est $min" >&2  
      return 1
    fi
  fi

  if [ ! -z $max ] ; then
    if [ "$number" -gt "$max" ] ; then  
      echo "Valeur trop grande: la valeur maximale est $max" >&2  
      return 1
    fi
  fi
  return 0
}
