test_si_négatif() { # Test_si_négatif # Retourne le code de retour 0 si est négative # Retourne le code de retour 1 si est positive # Retourne le code de reour 2 si la fonction est mal utilisée local rc=2 # Initialise le paramètre rc avec la valeur 2 if (( $# == 0 )) # Test si le nombre d'argument est 0 then # Si oui, echo "Argument manquant" >&2 # Retourne un message sur le canal d'erreur elif (( $# > 1 )) # Si non, test si le nombre d'argument est > à 1 then # Si oui echo "Trop d'arguments" >&2 # Retourne un message sur le canal d'erreur. elif (($1 >= 0)) # Si non, test si l'argument est positif ou égale à 0 then # Si oui, rc=1 # Affecte 1 au paramètre rc elif (($1 < 0)) # Si non, test si l'argument est négatif then # Si oui, rc=0 # Affecte 0 au paramètre rc fi return $rc # Affecte $rc au code retour } test_si_négatif ; echo -e $?\\n test_si_négatif 42 ; echo $? test_si_négatif -42 ; echo $? test_si_négatif 42-84 ; echo $? unset test_si_négatif