Fonction dans script valeur différente !

Bonjour,

Dans un script BASH, je teste si un login existe dans un fichier. Pour cela j’utilise une fonction que j’appelle quand j’en ai besoin :

_LOGIN=$(/bin/grep -i -w $1 fichier_user | cut -d ' ' -f1)

CHECK_LOGIN()
{
        if [  "$_LOGIN" = "$1" ] ; then
                # Le login existe
                return 1
        else
                # Le login n'existe pas
                return 0
        fi
}

CHECK_LOGIN
if [ $? == 0 ] ; then
echo "L'utilisateur n'existe pas"
else
echo "L'utilisateur existe déjà !!"
fi

Le problème est que je passe dans le cas “return 0” de la fonction quand un login existe au lieu du “return 1” :open_mouth: :017

Par contre si je n’utilise pas la fonction le résultat est correct je rentre bien dans la cas 1 = Existe :

if [ "$_LOGIN" = "$1" ] ; then # Le login existe echo "L'utilisateur existe déjà !!" else # Le login n'existe pas echo "L'utilisateur n'existe pas" fi

Une idée :whistle:

Merci

Le $1 dans la fonction correspond aux paramètres que tu passes à celle-ci, et non pas au $1 global du script. Or, tu ne passes aucun paramètre à la fonction lors de son appel, donc son $1 est vide.

[code]_LOGIN=$(/bin/grep -i -w $1 fichier_user | cut -d ’ ’ -f1)

CHECK_LOGIN()
{
if [ “$_LOGIN” = “$1” ] ; then
# Le login existe
return 1
else
# Le login n’existe pas
return 0
fi
}

on passe le $1 global du script en paramètre de la fonction

CHECK_LOGIN "$1"
if [ $? == 0 ] ; then
echo "L’utilisateur n’existe pas"
else
echo "L’utilisateur existe déjà !!"
fi[/code]

:006

Bien vue :007 Et oui je ne passé pas le paramètre du script à la fonction !

Je croyais que le $1 est global dans un script+fonctions…

Merci beaucoup.